如何上传大于25 mb-c#的视频,javascript

时间:2014-09-01 12:38:23

标签: c# javascript asp.net-mvc file-upload

我在项目中上传视频时遇到问题。 如果File大约有25mb,那么上传效果不错,但是如果我尝试上传更大的文件--80 mb,我收到"失败"。

Web.config文件:

<httpRuntime maxRequestLength="104857600" executionTimeout="3600" />

我在视图文件中的功能:

function createVideoUploader() {
        videoTempName = '@Guid.NewGuid().ToString().Replace("-", "").Substring(0, 13)';
        var uploader = new qq.FileUploader({
            element: document.getElementById('video-uploader'),
            allowedExtensions: ['3g2', '3gp', 'avi', 'f4v', 'flv', 'm4v', 'mov', 'mp4', 'mpeg', 'mpg', 'mts', 'ogv', 'webm', 'wmv'],
            sizeLimit: 838860800, //304857600,
            action: '@Url.Action("Upload", "Upload")',
            params: { 'fileTempName': videoTempName },
            multiple: false,
            onSubmit: function (id, fileName) {
                $('div.qq-upload-button').hide();
                $(".qq-upload-drop-area").remove();
            },
            onCancel: function() {
                createVideoUploader();
            },
            onComplete: function (id, fileName, responseJSON) {
                if(responseJSON.success == false) {
                    uploaded = false;
                    $("#videoUploadedFail").show(); // show video error
                    var postData = { 'fileTempName': videoTempName };
                    $.ajax({
                        type: 'POST',
                        url: '@Url.Action("DeleteTemp", "Upload")',
                        data: $.param(postData,true),
                        async: false
                    });
                } else if(responseJSON.success == true) {
                    uploaded = true;
                    $('div.qq-upload-button').hide();
                    var postData = { 'fileTempName': videoTempName };
                    $.post("@Url.Action("PreprocessVideo", "Upload")", $.param(postData,true),
                        function (data) {
                            appendSuccess("#flowVideo");
                            totalTime = secsToTime(data.seconds); // seconds to time
                            $("#duration").html(totalTime);
                            $(".timeText").html(totalTime);
                            $("#orderSlides").css("display", "inline-block");
                        });
                  }
            }
        });
        if (!($.browser.msie))
            $('span.qq-upload-span').append(' or drop file here');
    }

1 个答案:

答案 0 :(得分:1)

IIS 7+现在要求您还设置较新的requestFiltering/requestLimits/maxAllowedContentLength属性,并且30000000 httpRuntime/maxRequestLength的默认值为maxAllowedContentLength(约为28.4MB)你所看到的。

这应该与maxRequestLength属性一起设置,以确保IIS(通过<system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="104857600" /> </requestFiltering> </security> </system.webServer> 以字节为单位)和ASP.NET(通过{{1}}以千字节为单位)达成一致。

您应该可以通过应用程序web.config的requestLimits元素更改此设置,以允许更合适的最大值:

{{1}}

要记住的一件事是,一旦内容长度超过限制,这就是服务器端执行请求过滤 - 所以没有什么可以阻止用户尝试上传150MB只有一旦100.1MB上传,它就会失败。