2009-03-28 4 views
19

Мне нужен способ загрузки больших файлов (от 600 мб до 4 гб) на веб-сайт asp.net mvc. В настоящее время я использую swfupload; он работает достаточно хорошо, но это огромный успех на веб-сервере, потому что он отправляет его в одну большую загрузку, плюс я должен установить его в файле web.config, чтобы этот огромный файл стал огромным угрозой безопасности. В прошлом, когда я занимался разработкой веб-форм, я использовал Neatupload, который разбивает файл на куски и загружает их отдельно. Я ищу способ загрузки больших файлов в mvc, который загружает их через chunking. Любые идеи о том, как я могу это сделать?Загрузка большого файла в asp.net MVC

ответ

8
+0

Спасибо, друг, это то, что я искал –

+1

Просто так, чтобы кто-нибудь посетил это. Я решил, что это немного изменило его и теперь использует. swfupload давал мне слишком много проблем, как только файлы получили выше 1 ГБ. – Solmead

1

Вы можете сделать что-то похожее на то, что описано в this link? Я не понимаю, почему это не работает в ASP.NET MVC.

+0

URL-адрес мертв для меня –

7

Я закончил с использованием Darren Johnstone's ASP.NET File Upload Module для обработки загрузки на стороне сервера. Хотя я немного изменил его, чтобы он мог взять указатель на запрос, чтобы он сохранил временный файл для этого имени guid.

Было приятно, потому что он сохранил файл по мере его поступления на сервер и удалил файл из опубликованных данных, который затем отправил в действие на указанном контроллере.

+0

. Как вы получили его для работы в ASP.NET MVC без элементов управления runat = server? Есть ли в остальных классах точки пробивки? Не могли бы вы поделиться примером кода? –

+1

Модуль загрузки содержит 2 части, первый - httphandler, когда при публикации файла (с использованием MIME-кодирования) он автоматически удаляет файл, сохраняя его непосредственно, когда он идет, а затем разрешает вызов любой страницы/контроллера, а затем вызывается files [] array empty. Вторая часть - элементы управления, используемые для стандартных форм asp.net. Я вообще не использовал эти элементы управления. Вместо этого я использовал swfupload, который я связал в исходном вопросе, который использует js и flash для загрузки файла. Затем у меня был вызов действия «UploadAsync» на контроллере, на который была настроена swfupload для публикации. – Solmead

+0

Не могли бы вы поделиться образцом кода? Спасибо –

2

Пример на мой взгляд:

<input id="FileGUID" name="FileGUID" type="hidden" value="f632c00b-9b66-4716-8075-79df63b780fb" /> 
    <input type="file" id="FileUpload1" name="fileUpload1" /> 

    <script type="text/javascript"> 
     var UploadUrl = '/Video/AsyncUpload?FileGUID=f632c00b-9b66-4716-8075-79df63b780fb'; 
     $(function() { 
      $("#FileUpload1").makeAsyncUploader({ 
       upload_url: UploadUrl, 
       flash_url: '/Content/Flash/swfupload.swf', 
       button_image_url: '/Content/Images/blank-button.png', 
       button_text: '<font face="Helvetica, Arial" size="13pt" color="#ffffff">Upload File</font>', 
       disableDuringUpload: 'input[type="submit"]', 
       file_size_limit: '8024 MB', 
       button_text_top_padding: 2 
      }); 
     }); 
    </script> 

Тогда в реальной экономии действий для этой страницы я смотрю на файл, где действие asyncupload бы сохранен файл на основе FileGUID

реализации
1

SignalR пример можно найти here.

Это также включает в себя функциональность для работы с HttpContext.Request.GetBufferlessInputStream(), которая позволяет вам начать работу с данными post до полной загрузки.

+0

Ссылка, которую вы указали, мертва. –

+0

Я заменил ссылку – gb2d

Смежные вопросы