2012-01-18 44 views
1

我正在爲數據庫中的某些文件存儲一些二進制數據(是的,我知道這可能是一個壞主意)。我能夠將文件從正確的內容類型中取出,因爲我已經存儲了它。但我無法使用正確的文件名將文件傳送到客戶端。現在我有一個名爲get_file.asp文件下面的代碼:使用asp從數據庫抓取文件

sSQL = "SELECT filename, contenttype, binarydata FROM new_attachment WHERE filename = '" & filename & "'" 

oRs.Open sSQL, conn, 3, 3 

If Not oRs.EOF Then 
    Response.ContentType = oRs(1) 
    Response.BinaryWrite oRs(2) 

End if 

這將返回正確的文件,但與「get_file.asp」的文件名,而不是,比方說,「myfile.txt的」。訪問的網址是.../get_file.asp?filename=myfile.txt

當瀏覽器提示用戶將其保存在某處時,是否有辦法更改文件的名稱?

+0

我在這裏處理的是一個類似的問題:http://stackoverflow.com/questions/440892/how-to-output-an-excel- xls-file-from-classic-asp – cdeszaq 2012-01-18 16:30:29

回答

2

您需要發送出正確的標題:

Response.ContentType = "text/html" 
Response.AddHeader "Content-Disposition", "attachment; filename=YOURFILE.TXT" 
1

您需要添加Content-Disposition標頭。

頭應該是這樣的:

Content-Disposition: attachment; filename=<name of file> 

旁註:你是串聯SQL的方式是開放的SQL Injection - 你應該使用的參數。

+0

感謝您的提醒! +1 – Indigenuity 2012-01-18 19:22:13