Der Download-Pfad wird ausgeblendet, indem eine ID in der Datenbank übergeben und dann der Pfad in der Datenbank über die übergebene ID auf einer anderen Seite gelesen wird.
1. In c# implementierte Methode (nur der Code von .ASPX.CS ist erforderlich)
string sel_sql="select FileVisualPath from TabMailAttachFiles where FileID="+Request.QueryString[
"destFileName"].ToString(); // string destFileName = Request.QueryString["destFileName"]!=null?Request.QueryString["destFileName" ]:"";
string destFileName=ROA.Components.fune_commerce.Execad(sel_sql).Tables[0].Rows[0][0].ToString();
destFileName = Server.MapPath(".")+destFileName;
destFileName = Server.UrlDecode(destFileName);
if(File.Exists(destFileName))
{
FileInfo fi = new FileInfo(destFileName);
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
//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="application/octet-stream";
Response.WriteFile(destFileName);
Response.Flush();
Response.End();
}
anders
{
Response.Write("<script langauge=javascript>alert('Datei existiert nicht!');history.go(-1);</script>");
Response.End();
}
2. Implementierungsmethode in ASP
<!--#include file="conn.asp" -->
<%
Response.Buffer = true
Antwort.Klar
dunkle URL
Dimmen Sie fso,fl,flsize
dimDname
Dimmen Sie objStream,ContentType,flName,isre,url1
'********************************************* wird beim Aufruf der Download-Datei übergeben Name
m_ID=trim(request.QueryString("ID"))
set rs=Server.CreateObject("adodb.recordset")
sql="select * from dataview where xsf=true and id="&m_ID
rs.open sql,conn,1,1
wenn nicht rs.eof dann
Dname=rs("Pfad")
anders
Response.Write("nicht gefunden")
Antwort.Ende
Ende wenn
rs.close:set rs=nothing
'************************************************** * ****************
Wenn Dname<>"" Dann
'******************************Serververzeichnis, in dem heruntergeladene Dateien gespeichert werden
url=Server.MapPath(Dname)
anders
Response.Write("nicht gefunden")
Antwort.Ende
Ende wenn
Setze fso=Server.CreateObject("Scripting.FileSystemObject")
Setze fl=fso.getfile(url)
flsize=fl.size
flName=fl.name
Setze fl=Nichts
Setze fso=Nothing
Setze objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile-URL
Fall auswählen lcase(Right(flName, 4))
Fall „.asf“
ContentType = "video/x-ms-asf"
Fall „.avi“
ContentType = "video/avi"
Fall „.doc“
ContentType = „application/msword“
Fall „.zip“
ContentType = „application/zip“
Fall „.xls“
ContentType = „application/vnd.ms-excel“
Fall „.gif“
ContentType = "image/gif"
Fall „.jpg“, „jpeg“
ContentType = "image/jpeg"
Fall „.bmp“
ContentType = "image/bmp"
Fall „.ppt“
ContentType = „application/vnd.ms-powerpoint“
Fall „.mdb“
ContentType = „application/x-msaccess“
Fall „.wav“
ContentType = "audio/wav"
Fall „.mp3“
ContentType = "audio/mpeg3"
Fall „.mpg“, „mpeg“
ContentType = „video/mpeg“
Fall „.rtf“
ContentType = „application/rtf“
Fall „.htm“, „html“
ContentType = "text/html"
Fall „.txt“
ContentType = "text/plain"
Fall anders
ContentType = „application/octet-stream“
Endauswahl
Response.AddHeader „Content-Disposition“, „attachment; filename=" & flName
Response.AddHeader „Content-Length“, flsize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
Response.Flush
Antwort.Clear()
objStream.Close
Setze objStream = Nothing
%>
Quelle: „Clouds Lost in the Blue Sky“ BLOG