20

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

4

4 回答 4

8

Silverlight 文件上传

于 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 回答