ダウンロード パスは、データベース内の ID を渡し、渡された ID を介して別のページでデータベース内のパスを読み取ることによって非表示になります。
1. C#で実装する方法(.ASPX.CSのコードのみ必要)
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(ファイル.存在(destファイル名))
{
FileInfo fi = 新しい 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="アプリケーション/オクテットストリーム";
Response.WriteFile(destFileName);
Response.Flush();
Response.End();
}
それ以外
{
Response.Write("<script langauge=javascript>alert('ファイルが存在しません!');history.go(-1);</script>");
Response.End();
}
2.ASPでの実装方法
<!--#include file="conn.asp" -->
<%
応答.バッファ = true
応答.クリア
薄暗いURL
ディム fso、fl、flsize
薄暗い名前
Dim objStream、ContentType、flName、isre、url1
ダウンロード ファイルの呼び出し時に '******************************************* が渡されます名前
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
そうでない場合は、
Dname=rs("パス")
それ以外
Response.Write("見つかりません")
応答.終了
終了する場合
rs.close:set rs=nothing
'************************************************ * ****************
Dname<>"" の場合
'******************************ダウンロードしたファイルが保存されるサーバーディレクトリ
url=サーバー.マップパス(D名)
それ以外
Response.Write("見つかりません")
応答.終了
終了の場合
Set fso=Server.CreateObject("Scripting.FileSystemObject")
fl=fso.getfile(url) を設定します
flsize=fl.サイズ
flName=fl.name
fl=何も設定しない
fso=何も設定しない
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile URL
大文字と小文字を選択 lcase(Right(flName, 4))
ケース「.asf」
ContentType = "ビデオ/x-ms-asf"
ケース「.avi」
ContentType = "ビデオ/avi"
ケース「.doc」
ContentType = "アプリケーション/msword"
ケース「.zip」
ContentType = "アプリケーション/zip"
ケース「.xls」
ContentType = "アプリケーション/vnd.ms-excel"
ケース「.gif」
ContentType = "画像/gif"
「.jpg」、「jpeg」の場合
ContentType = "画像/jpeg"
ケース「.bmp」
ContentType = "画像/bmp"
ケース「.ppt」
ContentType = "アプリケーション/vnd.ms-powerpoint"
ケース「.mdb」
ContentType = "アプリケーション/x-msaccess"
ケース「.wav」
ContentType = "オーディオ/wav"
ケース「.mp3」
ContentType = "オーディオ/mpeg3"
「.mpg」、「mpeg」の場合
ContentType = "ビデオ/mpeg"
ケース「.rtf」
ContentType = "アプリケーション/rtf"
「.htm」、「html」の場合
ContentType = "テキスト/html"
「.txt」の場合
ContentType = "テキスト/プレーン"
それ以外の場合
ContentType = "アプリケーション/オクテットストリーム"
エンドセレクト
Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "コンテンツの長さ"、flsize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
レスポンス.フラッシュ
応答.Clear()
objStream.Close
objStream = なしを設定します
%>
出典:「青空に消えた雲」BLOG