데이터베이스에 ID를 전달한 후 다른 페이지에서 전달된 ID를 통해 데이터베이스에 있는 경로를 읽어 다운로드 경로를 숨깁니다.
1. C#으로 구현한 메소드(.ASPX.CS 코드만 필요)
string sel_sql="TabMailAttachFiles에서 FileVisualPath 선택 where FileID="+Request.QueryString[
"destFileName"].ToString(); // string destFileName = Request.QueryString["destFileName"]!=null?Request.QueryString["destFileName" ]:"";
문자열 destFileName=ROA.Components.fune_commerce.Execad(sel_sql).Tables[0].Rows[0][0].ToString();
destFileName = Server.MapPath(".")+destFileName;
destFileName = Server.UrlDecode(destFileName);
if(파일.존재(대상파일 이름))
{
FileInfo fi = new FileInfo(destFileName);
응답.지우기();
응답.ClearHeaders();
응답.버퍼 = 거짓;
//Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.Default));
Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length",fi.Length.ToString());
Response.ContentType="응용 프로그램/옥텟-스트림";
Response.WriteFile(destFileName);
응답.플러시();
응답.끝();
}
또 다른
{
Response.Write("<script langauge=javascript>alert('파일이 존재하지 않습니다!');history.go(-1);</script>");
응답.끝();
}
2. ASP에서의 구현 방법
<!--#include 파일="conn.asp" -->
<%
응답.버퍼 = true
응답.지우기
희미한 URL
희미한 fso,fl,flsize
희미한 이름
희미한 objStream,ContentType,flName,isre,url1
다운로드 파일 호출 시 '********************************************가 전달됩니다. 이름
m_ID=trim(request.QueryString("ID"))
rs=Server.CreateObject("adodb.recordset")를 설정합니다.
sql="select * xsf=true 및 id="&m_ID인 데이터뷰에서
rs.open SQL,콘,1,1
rs.eof가 아니라면
D이름=rs("경로")
또 다른
Response.Write("찾을 수 없음")
응답.끝
종료하면
rs.close:rs=아무것도 설정하지 않음
'************************************************ * ****************
Dname<>""이면
'********************************다운로드한 파일이 저장되는 서버 디렉터리
url=Server.MapPath(D이름)
또 다른
Response.Write("찾을 수 없음")
응답.끝
종료 조건
fso=Server.CreateObject("Scripting.FileSystemObject")를 설정합니다.
fl=fso.getfile(url) 설정
flsize=fl.size
flName=fl.name
fl=아무것도 설정하지 않음
fso=아무것도 설정하지 않음
objStream = Server.CreateObject("ADODB.Stream") 설정
objStream.Open
objStream.Type = 1
objStream.LoadFromFile URL
사례 선택 lcase(오른쪽(flName, 4))
케이스 ".asf"
ContentType = "비디오/x-ms-asf"
케이스 ".avi"
ContentType = "비디오/avi"
케이스 ".doc"
ContentType = "응용 프로그램/msword"
케이스 ".zip"
ContentType = "응용 프로그램/zip"
케이스 ".xls"
ContentType = "application/vnd.ms-excel"
케이스 ".gif"
콘텐츠 유형 = "이미지/gif"
케이스 ".jpg", "jpeg"
ContentType = "이미지/jpeg"
케이스 ".bmp"
ContentType = "이미지/bmp"
사례 ".ppt"
ContentType = "application/vnd.ms-powerpoint"
케이스 ".mdb"
ContentType = "응용 프로그램/x-msaccess"
케이스 ".wav"
ContentType = "오디오/wav"
케이스 ".mp3"
ContentType = "오디오/mpeg3"
케이스 ".mpg", "mpeg"
ContentType = "비디오/mpeg"
케이스 ".rtf"
ContentType = "응용 프로그램/rtf"
사례 ".htm", "html"
콘텐츠 유형 = "텍스트/html"
사례 ".txt"
ContentType = "텍스트/일반"
그렇지 않은 경우
ContentType = "응용 프로그램/옥텟 스트림"
선택 종료
Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "콘텐츠 길이", flsize
Response.Charset = "UTF-8"
Response.ContentType = 콘텐츠 유형
응답.BinaryWrite objStream.Read
응답.플러시
응답.지우기()
objStream.Close
objStream = 없음으로 설정
%>
출처 : "푸른 하늘에 사라진 구름" 블로그