3

asp.net fileuploadERR_CONNECTION_RESETコントロールを使用して、かなり大きなファイル (90 MB) をアップロードするのに 2 分ほどかかります。

これを共有ホスト環境でテストしているため、どのポリシーが適用されているか正確にはわかりません。

web.config の設定で十分だと思います:

 <httpRuntime requestValidationMode="2.0" maxRequestLength="1000000" executionTimeout="45000" />

他の非同期ファイル アップロード コントロールを検討する必要がありますか? web.config 設定がありませんか? 低速の接続で大きなファイルをアップロードするには、アップロード コントロールだけでは十分ではありませんか?

4

1 に答える 1

1

接続がリセットされ、最大リクエスト長をある程度まで上げることができる理由はいくつか考えられますが、非同期ファイル アップローダーを調べているのは正しいことです。最も重要な部分は、ファイルを小さな断片に「チャンク」して、リクエスト制限などを回避するものを使用することです。私はpluploadで最高の経験をしました:

http://www.plupload.com/

ファイルを受信するためのコードを次に示します (これは MVC ですが、.NET クラシックでハンドラーを使用するようにリファクタリングできます)。

       [HttpPost]            
        public ActionResult UploadImage(int? chunk, int? chunks, string name)
        {
            var fileData = Request.Files[0];

            if (fileData != null && fileData.ContentLength > 0)
            {
                var path = GetTempImagePath(name);
                fileSystem.EnsureDirectoryExistsForFile(path);

                // Create or append the current chunk of file.
                using (var fs = new FileStream(path, chunk == 0 ? FileMode.Create : FileMode.Append))
                {
                    var buffer = new byte[fileData.InputStream.Length];
                    fileData.InputStream.Read(buffer, 0, buffer.Length);
                    fs.Write(buffer, 0, buffer.Length);
                }
            }

            return Content("Chunk uploaded", "text/plain");
        }
于 2012-06-21T08:21:03.473 に答える