大文件上传到asp.net MVC

时间:2009-03-28 04:15:35

标签: asp.net asp.net-mvc swfupload chunking neatupload

我需要一种在asp.net mvc网站上传大文件(600 mb到4 gb)的方法。 目前我正在使用swfupload;它运行得很好,但它在网络服务器上受到了极大的打击,因为它在一个大的上传中发送它,而且我必须在web.config中设置它以允许那么大的文件,这是一个巨大的安全风险。在我以前进行Web表单开发时,我使用Neatupload将文件分成块并单独上传。我正在寻找一种方法来上传mvc中的大文件,通过分块上传。关于我如何做到这一点的任何想法?

6 个答案:

答案 0 :(得分:8)

答案 1 :(得分:7)

我最终使用Darren Johnstone's ASP.NET File Upload Module来处理服务器端的上传。虽然我稍微修改它,以便它可以在查询字符串上使用guid,它会将临​​时文件保存到该guid名称。

这很好,因为它在文件到达服务器时保存了文件,并将文件从发布的数据中剥离出来,然后发送到指定控制器上的操作。

答案 2 :(得分: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保存文件

答案 3 :(得分:1)

你能做一些类似于this link中描述的事情吗?我不明白为什么在ASP.NET MVC中不起作用。

答案 4 :(得分:1)

这可能对您有所帮助:Multiple File Upload with Progress

答案 5 :(得分:1)

可以找到SignalR实现示例here

这还包括使用HttpContext.Request.GetBufferlessInputStream()的功能,它允许您在完全上传之前开始处理帖子数据。