Загрузка большого файла на asp.net MVC - PullRequest
19 голосов
/ 28 марта 2009

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

Ответы [ 6 ]

8 голосов
/ 19 апреля 2009
7 голосов
/ 21 апреля 2009

В конечном итоге я использовал Модуль загрузки файлов ASP.NET Даррена Джонстона для обработки загрузки на стороне сервера. Хотя я немного изменил его, чтобы он мог использовать guid для строки запроса, чтобы сохранить временный файл с этим именем guid.

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

2 голосов
/ 18 сентября 2009

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

<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 голос
/ 09 марта 2013

Пример реализации SignalR можно найти здесь .

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

1 голос
/ 28 марта 2009

Может быть, это поможет вам: Загрузка нескольких файлов с прогрессом

1 голос
/ 28 марта 2009

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

...