ASP.NET의 URL에서 파일 다운로드 또는 스트리밍
사용자의 URL에서 파일을 다운로드하거나 스트리밍해야 하는 시나리오가 발생할 수 있습니다. ASP.NET 애플리케이션. 그러나 이러한 파일이 가상으로 매핑된 디렉터리에 있을 때 문제가 발생하므로 Server.MapPath를 사용하여 실제 위치를 확인할 수 없습니다.
이 문제에 대한 한 가지 해결책은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!