ASP.NET の URL からファイルをダウンロードまたはストリーミングする
ASP.NET の URL からファイルをダウンロードまたはストリーミングする必要があるシナリオが発生する場合があります。 ASP.NET アプリケーション。ただし、これらのファイルが仮想的にマップされたディレクトリに存在する場合に問題が発生し、Server.MapPath を使用してファイルの実際の場所を特定することができなくなります。
これに対する 1 つの解決策は、HttpWebRequest クラスを使用してファイルを取得し、ストリーミングすることです。クライアントに戻ります。これにより、ファイル パスの代わりに URL を介してファイルにアクセスできるようになります。
次のコード スニペットを検討してください:
try { // Create a WebRequest to retrieve the file HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url); // Get a response for the request HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse(); if (fileReq.ContentLength > 0) fileResp.ContentLength = fileReq.ContentLength; // Get the response stream Stream stream = fileResp.GetResponseStream(); // Prepare the response to the client HttpContext.Current.Response.ContentType = MediaTypeNames.Application.Octet; HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); HttpContext.Current.Response.AddHeader("Content-Length", fileResp.ContentLength.ToString()); int length; byte[] buffer = new byte[10000]; // Chunk size for reading the file do { // Check if the client is connected if (HttpContext.Current.Response.IsClientConnected) { // Read data into the buffer length = stream.Read(buffer, 0, buffer.Length); // Write it out to the response's output stream HttpContext.Current.Response.OutputStream.Write(buffer, 0, length); // Flush the data HttpContext.Current.Response.Flush(); // Clear the buffer buffer = new byte[buffer.Length]; } else { // Cancel the download if the client has disconnected length = -1; } } while (length > 0); } catch { // Handle any errors that may occur } finally { if (stream != null) { // Close the input stream stream.Close(); } }
このアプローチを実装すると、URL からファイルをストリーミングし、ファイルを直接表示できます。ブラウザに保存するか、ユーザーがローカル システムに保存できるようにします。
以上がASP.NET で URL からファイルをダウンロードまたはストリーミングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。