Я работаю над сайтом ASP.NET MVC, и часть моих требований заключается в том, что пользователи могут сообщать друг другу.Как бы вы могли создавать функции обмена сообщениями, если мне нужно иметь возможность обрабатывать вложение в ASP.NET MVC?
На первый взгляд это не так сложно. Сообщения в наиболее упрощенной форме - это просто таблица «Сообщения» с такими вещами, как «SenderID, ReceiversID (FK), Subject, Message» и т. Д.
Однако, как бы вы справились с «приложением»? Пользователи могут просматривать конфиденциальные PDF-файлы на нашем веб-сайте, содержащие финансовую информацию, и они предполагают, что смогут нажать кнопку «Отправить отчет на», чтобы отправить отчет другому пользователю вместе с текстовым сообщением.
Аналогичным образом, они смогут загружать несколько файлов и отправлять их вместе с их сообщением (а не только внутренними документами, которые они могут просматривать).
Как бы вы справились с этим в ASP.NET MVC?
Я рассмотрел папку с прикрепленными файлами где-то и таблицу вложений, поэтому, если пользователь нажимает «Отправить отчет» или загружает документ, этот файл копируется в папку вложений, а запись создается в таблице «Вложения» ,
Затем, если пользователь нажимает ссылку, имеющую такой маршрут, как/messaging/attachments/{fileID}, он отправит соответствующий файл им. Я мог бы даже поддерживать контрольную сумму каждого файла в таблице вложений/файлов, поэтому, если пользователь отправляет тот же отчет, мы не будем дублировать файл в папке вложений.
В некотором роде чувствую, что я заново изобретаю электронную почту, но клиент настаивает на том, что для обеспечения соблюдения требований безопасности мы не можем просто отправлять эти отчеты нашим пользователям, они должны войти в нашу систему, чтобы получить их.
Это правильный способ сделать что-то подобное или я должен посмотреть на другой подход?
Это по существу, как бы я это сделал. –
Идея выглядит нормально. Если вы используете SQL Server 2008, вы можете подумать об использовании FILESTREAM. Это облегчает доступ к файлам. – LukLed
Вот как я тоже это сделаю ... Просто убейте вас, рассмотрите последствия использования GUID для fileID - это просто еще один уровень безопасности (по неизвестности). Это тот, который я обычно использую (имея в виду дополнительные накладные расходы на использование GUID, а не int). –