2016-08-23 4 views
0

내가 asp.net에서 초보자 해요, 어떤 파일을 다운로드 할 수 있습니다 최종 사용자에게 간단한 웹 애플리케이션을 작성하려면, 그 목적이 코드 쓰기 :
asp.net에서 다운로드 할 서버에서 파일을 찾을 수없는 이유는 무엇입니까?

string filePath = "~/beh/" + query[0].OstFileName; 
FileInfo file = new FileInfo(filePath); 
if (file.Exists) { 

    Response.ContentType = "application/octet-stream"; 
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + query[0].OstFileName.Trim()); 
    Response.TransmitFile(Server.MapPath("~/beh/" + query[0].OstFileName.Trim())); 
    Response.End(); 
} else { 
    Response.Write("<script>alert('File Not Found 1')</script>"); 
} 

을하지만 코드를 실행할 때 다른 블록 경고를 얻을 , 파일을 찾을 수 없음 1 메시지를 의미합니다. 내 잘못은 어디에 있습니까? 감사합니다.

답변

0

문자열적인 filePath = "~/BEH /"+ 쿼리 [0] .OstFileName;

이 줄에서는 파일 이름을 비롯하여 검색 할 경로를 지정합니다.

이 파일이 존재하면 다음 줄을 검사하고, 그렇다면 쿼리 결과에서 파일을 저장하십시오.

그러나 실제로 파일을 저장하기 전에 파일이 존재하는지 확인하면 파일이 존재하지 않습니다.

경로를 읽기 : string filePath = Server.MapPath ("~ \ beh")로 변경하십시오.

그런 다음 파일을 저장 한 후에 파일 이름을 추가하십시오.

희망이 있습니다.

0

문제점은 다음 줄에 나와 있습니다.

string filePath = "~/beh/" + query[0].OstFileName; 
FileInfo file = new FileInfo(filePath); 

FileInfo 클래스는 자체적으로 로컬 실제 경로에 매핑 할 수없는 가상 경로를 제공합니다. 그러나 Response.TransmitFile을 호출 할 때 가상 경로를 로컬 파일 경로에 올바르게 매핑하고 있습니다.

가 코드를 변경

다음

string filePath = "~/beh/" + query[0].OstFileName; 
FileInfo file - new FileInfo(Server.MapPath(filePath)); 

참조 : https://msdn.microsoft.com/en-us/library/ms524632(v=vs.90).aspx

관련 문제