关于下载路径的隐藏都是通过传递一个数据库中的ID
然后在另外一张页面通过传递的ID在数据库中读出路径
c#中实现的方法(只需要ASPXCS的代码就可以了)
string sel_sql=select FileVisualPath from TabMailAttachFiles where FileID=+RequestQueryString[destFileName]ToString();
// string destFileName = RequestQueryString[destFileName]!=null?RequestQueryString[destFileName]:;
string destFileName=ROAComponentsfune_commerceExecad(sel_sql)Tables[]Rows[][]ToString();
destFileName = ServerMapPath()+destFileName;
destFileName = ServerUrlDecode(destFileName);
if(FileExists(destFileName))
{
FileInfo fi = new FileInfo(destFileName);
ResponseClear();
ResponseClearHeaders();
ResponseBuffer = false;
//ResponseAppendHeader(ContentDispositionattachment;filename= +HttpUtilityUrlEncode(PathGetFileName(destFileName)SystemTextEncodingDefault));
ResponseAppendHeader(ContentDispositionattachment;filename= +HttpUtilityUrlEncode(PathGetFileName(destFileName)SystemTextEncodingUTF));
ResponseAppendHeader(ContentLengthfiLengthToString());
ResponseContentType=application/octetstream;
ResponseWriteFile(destFileName);
ResponseFlush();
ResponseEnd();
}
else
{
ResponseWrite(<script langauge=javascript>alert(文件不存在!);historygo();</script>);
ResponseEnd();
}
在ASP中的实现方法
<!#include file=connasp >
<%
ResponseBuffer = true
ResponseClear
dim url
Dim fsoflflsize
dim Dname
Dim objStreamContentTypeflNameisreurl
*********************************************调用时传入的下载文件名
m_ID=trim(requestQueryString(ID))
set rs=ServerCreateObject(adodbrecordset)
sql=select * from dataview where xsf=true and id=&m_ID
rsopen sqlconn
if not rseof then
Dname=rs(path)
else
ResponseWrite(no found)
Responseend
end if
rsclose:set rs=nothing
******************************************************************
If Dname<> Then
******************************下载文件存放的服务端目录
url=ServerMapPath(Dname)
else
ResponseWrite(no found)
Responseend
End If
Set fso=ServerCreateObject(ScriptingFileSystemObject)
Set fl=fsogetfile(url)
flsize=flsize
flName=flname
Set fl=Nothing
Set fso=Nothing
Set objStream = ServerCreateObject(ADODBStream)
objStreamOpen
objStreamType =
objStreamLoadFromFile url
Select Case lcase(Right(flName ))
Case asf
ContentType = video/xmsasf
Case avi
ContentType = video/avi
Case doc
ContentType = application/msword
Case zip
ContentType = application/zip
Case xls
ContentType = application/vndmsexcel
Case gif
ContentType = image/gif
Case jpg jpeg
ContentType = image/jpeg
Case bmp
ContentType = image/bmp
Case ppt
ContentType = application/vndmspowerpoint
Case mdb
ContentType = application/xmsaccess
Case wav
ContentType = audio/wav
Case mp
ContentType = audio/mpeg
Case mpg mpeg
ContentType = video/mpeg
Case rtf
ContentType = application/rtf
Case html
ContentType = text/html
Case txt
ContentType = text/plain
Case Else
ContentType = application/octetstream
End Select
ResponseAddHeader ContentDisposition attachment; filename= & flName
ResponseAddHeader ContentLength flsize
ResponseCharset = UTF
ResponseContentType = ContentType
ResponseBinaryWrite objStreamRead
ResponseFlush
responseClear()
objStreamClose
Set objStream = Nothing
%>