2012-01-15 15 views
1

valums ajaxアップロードコンポーネント(http://valums.com/ajax-upload/)を使用しています。私のサイトでは、500MBを超えるサイズのファイルをユーザーにアップロードさせる予定です。私は厳密な純粋なHTMLの要件があります。このサイズのファイルをInternet Explorerで正常にアップロードできます。ただし、Chromeを使用しようとすると、ファイルがサーバーに書き込まれることはありませんが、ファイルが大きい場合にのみ書き込まれます。小さなファイルの場合、ファイルは正常に書き込まれます。しかし、大きなファイルの場合、「最大要求長を超えました」というエラーが発生します。バールーム付きのChromeで大量のファイルをアップロードできない

私はこのサイズのファイルをIEでアップロードできることを考慮して、私のweb.configの設定が正しいことを知っています。これは、XHR実装には、このサイズのファイルに対応するように設定する必要のあるものがあると私に信じています。しかし、私はそれが何であるか分かりません。誰もがすることをASP.NET MVCを使用した値のサンプルを提供することができます。

  • が大きい(> 500メガバイト)を可能にしますファイルのアップロードIEとChromeで
  • XHRをサポートするブラウザでアップロードされたファイルの進行状況を表示します

ありがとうございます!

+0

"最大リクエスト長を超過しました"というエラーメッセージが黄色い画面に表示されていますか? – danludwig

答えて

2

問題を再現できません。ここで私は1GBにファイルを制限した私の設定です。

コントローラー:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Upload(string qqfile) 
    { 
     var path = Server.MapPath("~/App_Data"); 
     var file = Path.Combine(path, qqfile); 
     using (var output = System.IO.File.OpenWrite(file)) 
     { 
      Request.InputStream.CopyTo(output);     
     } 
     return Json(new { success = true }); 
    } 
} 

Index.cshtmlビュー:

@{ 
    Layout = null; 
} 
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Test</title> 
    <link href="@Url.Content("~/Content/fileuploader.css")" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
    <div id="file-uploader">  
     <noscript>   
      <p>Please enable JavaScript to use file uploader.</p> 
     </noscript>   
    </div> 
    <script src="@Url.Content("~/Scripts/fileuploader.js")" type="text/javascript"></script> 
    <script type="text/javascript"> 
     var uploader = new qq.FileUploader({ 
      element: document.getElementById('file-uploader'), 
      action: '@Url.Action("upload")' 
     }); 
    </script> 
</body> 
</html> 

web.configファイル:web.configファイルに注意すべき

<?xml version="1.0"?> 
<configuration> 
    <appSettings> 
    <add key="webpages:Version" value="1.0.0.0"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings> 

    <system.web> 

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

    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 

    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages"/> 
     </namespaces> 
    </pages> 
    </system.web> 

    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <security> 
     <requestFiltering> 
     <requestLimits maxAllowedContentLength="1073741824" /> 
     </requestFiltering> 
    </security> 
    </system.webServer> 

    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

物事は<httpRuntime>です:

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

とあなたにもIIS7 +(<requestLimits>)でこのサイトをホストしている場合に必要です。この設定で

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <security> 
     <requestFiltering> 
     <requestLimits maxAllowedContentLength="1073741824" /> 
     </requestFiltering> 
    </security> 
</system.webServer> 

を私は、Firefox 8.0の最新バージョンではサイズが1GBまでのファイルをアップロードすることができています、 IE9とChrome 16.

IIS Expressを使用してサイトをローカルにホストしました。

+1

こんにちは!私はこれらすべての設定を使用しますが、動作しません –

関連する問題