WriteFile 호출이 제대로 동기화 되었습니까? 호출 한 직후 작성된 파일을 삭제할 수 있습니까?파일을 Response.WriteFile()에서 사용한 후 언제 파일을 삭제할 수 있습니까?
답변
당신이 루츠 리플렉터와 HttpResponse.WriteFile
의 구현을 보면 알 수 있듯이 그것은 완전히 동기이다. Response.WriteFile
을 호출 한 직후 파일을 삭제할 수 있습니다.
응답 스트림이 클라이언트에 완전히 전송되었다고 보장 할 수는 없지만 Response.Flush
을 호출해도 보증이 제공되지 않습니다. 따라서 파일을 삭제하기 전에 Response.Flush
번으로 전화 할 필요가 없습니다.
MemoryStream
에 파일을로드하는 것을 피하면 아무런 이점이 없으며 특히 메모리 용량이 큰 파일의 경우 비용이 많이 듭니다.
메모리가 작동하는 경우 나머지 RESPONSE 명령과 마찬가지로 동기식입니다.
Response.WriteFile()
으로 클라이언트에 파일을 쓰는 경우 Response.Flush()
을 호출하면 해당 파일이 클라이언트에 완전히 출력되었는지 확인할 수 있습니다. 완료되면 웹 서버에서 삭제할 수 있습니다.
파일이 미션 크리티컬 한 경우 더욱 강력한 시스템을 구축하는 것이 좋습니다. 클라이언트 측 스크립트가 파일 수신 확인을 확인한 다음 웹 서버에 파일을 삭제할 수 있음을 알립니다.
나를 위해 다음 접근 방식이 효과적이었습니다 :'Response.Flush(); Response.Close(); File.Delete (path); ' – Cosmin
전송 작업
또한 IIS하자 알아서하는 전송 작업을 호출 할 수 있습니다. 실제로 IIS에서 작업자 프로세스 외부로 전송됩니다. 당신이 정말 편집증 경우
메모리 스트림
파일을 전송하지 않습니다. 크기가 적당한 경우 메모리 스트림에로드하고 전송하십시오. 그런 다음 언제든지 파일을 삭제할 수 있습니다. 디스크의 파일은 IIS에서 절대로 건드리지 않습니다. 솔루션입니다
는 사용 후 구문 Response.WriteFile(fileName);
, 다음 코드 줄을 입력 :
Response.Flush();
System.IO.File.Delete(fullPathFileName);
Response.End();
가능하면 Response.End()를 사용하지 마십시오. 그것은 잡히지 않는 예외를 던지고 스레드를 중단합니다. Response.SuppressContent = true를 사용하는 것이 더 좋습니다. HttpContext.Current.ApplicationInstance.CompleteRequest(); return; 대신. – pawrog
- 1. 다운로드 후 파일을 삭제할 수 없습니다.
- 2. git stash에서 하나의 파일을 삭제할 수 있습니까?
- 3. FileSystemWatcher를 사용하여 파일을 볼 때 파일을 삭제할 수 있습니까?
- 4. galaxy에서 파일을 삭제할 수 없습니다
- 5. mysql localhost.log 파일을 삭제할 수 있습니까?
- 6. 어떻게/java에서 파일을 삭제할 수 있습니까?
- 7. Windows에서 열린 파일을 삭제할 수 있습니까?
- 8. Log4Net 로그 파일을 자동으로 삭제할 수 있습니까?
- 9. 어떻게 파일을 삭제할 때 저장할 수 있습니까?
- 10. 디렉토리에서 재귀 적으로 파일을 삭제할 수 있습니까?
- 11. MSDeploy에서 파일을 삭제할 수 없습니다.
- 12. xls 파일을 삭제할 수 없습니다.
- 13. mplayer 슬레이브 모드 - 시청 후 파일을 삭제할 수 없습니다.
- 14. iPhone/Objective C : 파일을 삭제할 수 없습니다.
- 15. C# 파일을 삭제할 수 없습니다 - System.UnauthorizedAccessException
- 16. SQLite 데이터베이스 파일을 사용한 후 이름을 바꿀 수 없습니다.
- 17. C1ZipFile을 사용한 후에이 파일을 삭제할 수없는 이유는 무엇입니까?
- 18. 파일을 삭제할 수 있는지 확인하는 방법
- 19. 시스템에서 파일을 삭제할 수는 있지만 프로그램은 삭제할 수 없습니까?
- 20. Ant를 사용하여 파일을 삭제할 수 없습니다.
- 21. Outlook.MailItem에서 첨부 파일을 삭제할 수 없습니다.
- 22. 언제 msbuild 파일을 사용합니까?
- 23. 설치 프로그램은 처음에 만들지 않은 파일을 선택적으로 삭제할 수 있습니까?
- 24. .ics 파일을 사용하면 이전 이벤트를 삭제할 수 있습니까?
- 25. 자바 스크립트의 임시 인터넷 파일에서 파일을 삭제할 수 있습니까?
- 26. C/C++에서 잠긴 파일을 강제로 삭제할 수 있습니까?
- 27. Windows에서 프로세스에 의해 열린 파일을 삭제할 수 있습니까?
- 28. 내 사이트에서 필요하지 않은 파일을 찾을 수있어서 삭제할 수 있습니까?
- 29. ftp를 통해 파일을 업로드 할 때까지 기다렸다가 삭제할 수 있습니까?
- 30. 어떻게 Perforce 저장소에서 복구 할 수없는 파일을 삭제할 수 있습니까?
고마워, 이것 역시 나를 도왔다! –
나는 이것을 단지 테스트했고 이론적으로는 동의하지만 실제로는 그렇지 않다. 설명서에 sychronous가 표시되어 있지만 방금 확인한 환경 (VS 2010, dev server, .Net 4)에서 ** Response.Flush **를 호출해야합니다. 그렇지 않으면 파일이 반환되어 반환 될 수 있습니다. –