Загрузка большого файла в asp.net MVC

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

6 ответов



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

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


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

<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


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


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


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

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