2014-09-01 6 views
0

У меня проблема с загрузкой видео в моем проекте. Если файл имеет около 25 МБ, тогда загрузка хорошая, но если я попытаюсь загрузить файл большего размера - 80 мб, я получаю «сбой».Как загрузить видео размером более 25 мб-C#, javascript

файл 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

IIS 7+ Теперь требует, чтобы вы также установить новую requestFiltering/requestLimits/maxAllowedContentLength атрибут, и это имеет значение по умолчанию для maxAllowedContentLength из 30000000 (примерно 28,4 МБ), который будет соответствовать тому, что вы видите.

Это должно быть установлено в сочетании с атрибутом httpRuntime/maxRequestLength, чтобы гарантировать, что оба IIS (через maxAllowedContentLength в байтах) и ASP.NET (через maxRequestLength в килобайтах) согласуются.

Вы должны быть в состоянии изменить это, чтобы позволить более подходящий максимум через элемент requestLimits вашего приложения web.config:

<system.webServer> 
    <security> 
    <requestFiltering> 
     <requestLimits maxAllowedContentLength="104857600" /> 
    </requestFiltering> 
    </security> 
</system.webServer> 

Одна вещь, чтобы иметь в виду, однако, что это фильтрация запрос выполняется на стороне сервера, как только длина содержимого превысит лимит - так что нечего останавливать попытку пользователя загружать 150 МБ только для того, чтобы он не сработал после загрузки 100.1 МБ.

+0

Это решает мою проблему. Большое спасибо. – miniacz

Смежные вопросы