誰もがこの経験を持っていると思います。ページには、サーバー上の単語ファイルを指すリンクがあります。クライアントマシンにオフィスがインストールされている場合、リンクをクリックすると、単語を呼び出して開きます。クライアントマシンにオフィスがインストールされていない場合、リンクをクリックすると[保存]ダイアログボックスが表示されます。要約すると、ブラウザがファイルタイプを知っている場合、自動的に開きます。わからない場合、顧客は保存するように求められます。しかし、時には、どんな種類のファイルがあっても、それを開かず、クライアントに直接保存できるようにすることを願っています。この要件を満たすには、サーバーハードディスクに保存されているファイルを、Aspuploadコンポーネントのsendbinaryメソッドを使用して実装する必要があります。データベースに保存されているファイルの場合、レコードセットを開き、バイナリデータをクライアントに直接出力するだけです。ただし、ブラウザファイルのMIMEタイプ、ファイル名、ファイルサイズを伝える必要があります。
1。サーバー側のハードドライブ上のファイル
コードコピーは次のとおりです。
<%
Dimupload、Filepath
setupload = server.createObject( "persits.upload")
filepath = server.mappath( "。")& "/"& "2003529213019.txt"
'Sendbinaryパラメーター説明:
'パラメータ1:物理的なパスをファイルします
'パラメーター2:ファイルのMIMEタイプなどの情報をブラウザに転送するかどうか
'パラメーター3:ファイルタイプ、特定のMIMEタイプを指定できますが、通常、アプリケーション/Octet-Binaryを使用できます
'パラメーター4:クライアントにファイルを保存するか、直接開くようにします。 True:保存; false(デフォルト):open
upload.sendbinaryfilepath、true、 "application/octet-binary"、true
%>
2。サーバー側のデータベース内のファイル
コードコピーは次のとおりです。
<%
dimobjconn、objrs
setobjconn = server.createObject( "adodb.connection")
setobjrs = server.createObject( "adodb.recordset")
objconn.open "driver = {microsoft accessdriver(*。mdb)}; dbq ="&server.mappath( "db1.mdb")
objrs.open "select*fromt5whereid = 2"、objconn、1,3
Response.ContentType = "Application/Octet-Stream"
response.addheader "Content-disposition"、 "attachment; filename ="&objrs( "filename")
Response.Addheader "Content-Length"、CSTR(objrs( "size")) 'ここでは、CSTRで変換する必要があります
respons.binarywriteobjrs( "file")
objrs.close
setobjrs =何もない
objconn.close
setobjconn =何もない
%>
この方法では、ファイルを保存するときにファイル名とファイルサイズを同時に保存する必要があります!ファイル名とサイズが指定されていない場合、ブラウザがファイルタイプを知っている場合、自動的に開かれます。わからない場合、顧客は保存するように求められます!