我需要一种在 asp.net mvc 网站上上传大文件(600 mb 到 4 gb)的方法。目前我正在使用swfupload;它工作得很好,但它对网络服务器造成了巨大的打击,因为它通过一次大上传发送它,而且我必须在 web.config 中设置它以允许这么大的文件,这是一个巨大的安全风险。过去,当我进行 Web 表单开发时,我使用Neatupload将文件分成块并单独上传。我正在寻找一种在 mvc 中上传大文件的方法,该文件通过分块上传。关于我如何做到这一点的任何想法?
Solmead
问问题
12546 次
4 回答
8
于 2009-04-19T13:04:35.767 回答
7
我最终使用Darren Johnstone 的 ASP.NET 文件上传模块来处理服务器端的上传。虽然我稍微修改了它,以便它可以在查询字符串上使用一个 guid,它将临时文件保存到该 guid 名称。
这很好,因为它在文件到达服务器时保存了文件,并将文件从发布的数据中剥离出来,然后将其发送到指定的控制器上的操作。
于 2009-04-20T20:00:02.390 回答
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 保存文件
于 2009-09-18T16:16:40.957 回答
1
可以在此处找到 SignalR 实现示例。
这还包括使用 HttpContext.Request.GetBufferlessInputStream() 的功能,它允许您在完全上传之前开始处理发布数据。
于 2013-03-09T01:22:38.547 回答