ASP.NET의 URL에서 파일 다운로드 및 스트리밍
ASP.NET에서 브라우저에 저장 프롬프트를 표시하는 스트리밍 파일은 다음과 같습니다. Server.MapPath를 사용하여 달성되었습니다. 그러나 파일이 가상으로 매핑된 디렉터리에 있는 경우 이 방법이 작동하지 않을 수 있습니다. 다음은 HttpWebRequest를 사용하여 URL에서 파일을 스트리밍하는 대체 솔루션입니다.
//Create a stream for the file Stream stream = null; //This controls how many bytes to read at a time and send to the client int bytesToRead = 10000; // Buffer to read bytes in chunk size specified above byte[] buffer = new Byte[bytesToRead]; // The number of bytes read try { //Create a WebRequest to get the file HttpWebRequest fileReq = (HttpWebRequest) HttpWebRequest.Create(url); //Create a response for this request HttpWebResponse fileResp = (HttpWebResponse) fileReq.GetResponse(); if (fileReq.ContentLength > 0) fileResp.ContentLength = fileReq.ContentLength; //Get the Stream returned from the response stream = fileResp.GetResponseStream(); // prepare the response to the client. resp is the client Response var resp = HttpContext.Current.Response; //Indicate the type of data being sent resp.ContentType = MediaTypeNames.Application.Octet; //Name the file resp.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); resp.AddHeader("Content-Length", fileResp.ContentLength.ToString()); int length; do { // Verify that the client is connected. if (resp.IsClientConnected) { // Read data into the buffer. length = stream.Read(buffer, 0, bytesToRead); // and write it out to the response's output stream resp.OutputStream.Write(buffer, 0, length); // Flush the data resp.Flush(); //Clear the buffer buffer = new Byte[bytesToRead]; } else { // cancel the download if client has disconnected length = -1; } } while (length > 0); //Repeat until no data is read } finally { if (stream != null) { //Close the input stream stream.Close(); } }
이 코드를 사용하면 웹사이트의 물리적 위치에 관계없이 어디에나 있을 수 있는 파일의 URL을 지정할 수 있습니다. 적절한 헤더를 설정하고 파일을 청크로 클라이언트에 스트리밍하여 원활한 다운로드 환경을 제공합니다.
위 내용은 ASP.NET의 URL에서 파일을 스트리밍하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!