У меня есть приложение MVC
, в котором пользователь использует элемент управления загрузкой файлов и загружает файл, имеющий 30 МБ или более, в базу данных sql.
Я новичок в MVC arch. Извините, я могу задавать глупые вопросы!
Теперь клиент говорит, что конечные пользователи сталкиваются с трудностями при загрузке большого количества больших файлов, поэтомуон хотел оптимизировать, выбрав папку и загрузив все эти огромные файлы и вставив их в базу данных sql.
multi-file-upload-not-userfriendly
Конечные пользователи говорят, что они не хотят нажимать на кнопку загрузки и просматривать несколько раз.вместо этого они выберут папку, в которой будут все нужные файлы, и нажмут одну кнопку загрузки, она будет загружена / вставлена в базу данных.На приведенном выше рисунке требуется 4 загрузки файла.но могут быть случаи, когда вам может понадобиться 10 загрузок файлов.в этом случае конечный пользователь не будет заинтересован в выполнении этой многофайловой загрузки, одна за другой.Эти файлы могут иметь размер от 10 КБ до 100 МБ!
Каков альтернативный подход для загрузки нескольких файлов, которые также имеют файлы большого размера, в БД?после нескольких раздумий я планирую:
1) Zip-файл и загрузить файлы в общую папку сервера, и оттуда мой код будет читать файлы один за другим и вставлять в db
, но кто-нибудь может подтвердитьправильный ли это подход?Мне нужно создать общий диск на сервере - скажем C:\sharedFolder
, а затем я предложу пользователю просмотреть несколько файлов (скажем, file1.txt, file2.xlsx и т. Д., Которые имеют около 40 МБ, 50 МБ соответственно)..) и когда я нажму на кнопку «загрузить», я скопирую файлы и отправлю их в папку общей папки сервера.
что я пробовал: Я использовал контроль загрузки файла.
текущий код в моем файле ABCcontroller.cs:
[HttpPost]
public ActionResult UploadfilePost(HttpPostedFileBase file)
{
string _path;
try
{
if (file.ContentLength > 0)
{
string _FileName = Path.GetFileName(file.FileName);
_path = Path.Combine(Server.MapPath(@"~/App_Data"), _FileName);
file.SaveAs(_path);
var tempFileName = Path.GetTempFileName();
try
{
using (var streamReader = new StreamReader(_path))
using (var streamWriter = new StreamWriter(tempFileName))
{
// code to further manipulate
}