다운로드 링크를 클릭 할 때 사용자에게 파일을 전달하는 코드가 있습니다. 보안상의 이유로 파일에 직접 링크 만 할 수는 없으므로 URL을 디코딩하고 파일을 전송하도록 설정되었습니다.Response TransmitFile
잠시 동안 잘 작동했지만 최근에는 파일 다운로드가 시작될 때 문제가 발생하기 시작했지만 파일의 크기가 표시되지 않습니다.
다운로드가 중지되어야 할 때이 때문에.
파일은 약 99MB이지만 다운로드 할 때 브라우저는 100MB를 초과하는 방식으로 다운로드합니다. 다운로드하는 내용을 모르지만 취소하지 않으면 멈추지 않습니다.
그래서 내 질문은 TransmitFile
에 대한 대안이나 적절한 시간에 중지되도록 파일 크기가 전송되도록하는 방법입니까? 나는 그것이 너무 커서 이후 내가 전체 파일을 메모리로로드 싶지 않기 때문에 WriteFile
을 사용하지 않으
string filename = Path.GetFileName(url);
context.Response.Buffer = true;
context.Response.Charset = "";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "application/x-rar-compressed";
context.Response.AddHeader("content-disposition", "attachment;filename=" + filename);
context.Response.TransmitFile(context.Server.MapPath(url));
context.Response.Flush();
: 여기
는 코드입니다.감사합니다.
죄송합니다. 코드를 게시하는 것을 잊어 버렸습니다. string filename = Path.GetFileName (url); context.Response.Buffer = true; context.Response.Charset = ""; context.Response.Cache.SetCacheability (HttpCacheability.NoCache); context.Response.ContentType = "application/x-rar-compressed"; context.Response.AddHeader ("content-disposition", "attachment; filename ="+ filename); context.Response.TransmitFile (context.Server.MapPath (url)); context.Response.Flush(); – geoff
도움이되기를 기대했지만 도움이되지 않는 코드를 발견했습니다. FileInfo OutFile = 새 FileInfo (context.Server.MapPath (url)); context.Response.Clear(); string filename = Path.GetFileName (url); context.Response.Buffer = true; context.Response.Charset = ""; context.Response.Cache.SetCacheability (HttpCacheability.NoCache); context.Response.ContentType = "application/x-rar-compressed"; context.Response.AddHeader ("content-disposition", "attachment; filename ="+ filename); context.Response.TransmitFile (context.Server.MapPath (url), 0, OutFile.Length); context.Response.Flush(); – geoff