Загрузка большого файла в 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 до их полной загрузки.