PALMisLIFE 討論區
標題:
[求助] [HTML] 下載檔案的語法!
[列印本頁]
作者:
johnnyk
時間:
2004-8-17 10:20
標題:
[求助] [HTML] 下載檔案的語法!
要在網頁上讓User下載.txt檔案
<a href="abc.txt">文字</a>
使用這種方式會直接開啟文件,而不會出現下載視窗
解決方法一:壓縮成ZIP檔
解決方法二:按右鍵另存新檔
不過以上二種方法都不可行,因為User對電腦操作不熟(就是很多人說的電腦白X)
能不能"點一下左鍵就下載"?!
(JavaScript、ASP、HTML 語法皆可)
[
Last edited by johnnyk on 2004-8-17 at 10:21
]
作者:
Dragoon
時間:
2004-8-17 11:14
標題:
Re: [求助] [HTML] 下載檔案的語法!
這要從 http 的 header 下手...
不是 html 的 header 喔!
這邊是 RFC
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
通常要配合主機端語言來做控制(ASP, PHP, JSP, Perl, CGI 等), 無法單獨的用
<a href="download.txt">下載</a>
複製代碼
這樣來解決.
我提供我參考別人修改來的ㄧ段 PHP 程式碼:
function echoFileHeader($mName, $mSize, $mContent = 'application/octet-stream')
{
GLOBAL $HTTP_SERVER_VARS;
if(strpos($HTTP_SERVER_VARS['HTTP_USER_AGENT'], 'MSIE')){
// IE cannot download from sessions without a cache
header('Cache-Control: public');
} else {
header('Cache-Control: private');
}
header("Content-type: $mContent");
header("Content-length:" . (string)($mSize) );
//header("Content-Disposition:inline; filename=\"" . $mName . "\"");
if (strpos($HTTP_SERVER_VARS['HTTP_USER_AGENT'], 'MSIE')) {
header("Content-Disposition:attachment; filename=\"" . $mName . "%20\"");
} else {
header("Content-Disposition:attachment; filename=\"" . $mName . "\"");
}
return TRUE;
}
複製代碼
這邊的 header() 是對 HTTP 送出 HEADER, 並不是 HTML 裡面的 header, 請注意.
對 IE 要對檔名另作處理, 好像是因為 5.0 or 6.0 的一個 bug(記不太得了)
有問題再繼續討論~
作者:
ddthehe
時間:
2004-8-17 21:44
標題:
Re: [求助] [HTML] 下載檔案的語法!
這段原碼是從藍色小舖來的哦,應該改一下(檔案類性的地方)或不用改就可以了,沒有測試ASP的平台懶得試了 …
download.asp 的內容:
<%
Response.Buffer = True
Dim strFilePath, strFileSize, strFileName
Const adTypeBinary = 1
strFilePath = Request.QueryString("File")
strFileSize = Request.QueryString("Size")
strFileName = Request.QueryString("Name")
Response.Clear
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile server.mappath(strFilePath)
strFileType = lcase(Right(strFileName, 4))
Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case Else
ContentType = "application/octet-stream"
End Select
Response.AddHeader "Content-Disposition", "attachment; filename=" & strFileName
Response.AddHeader "Content-Length", strFileSize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
Response.Flush
objStream.Close
Set objStream = Nothing
%>
複製代碼
用「download.asp?File=檔名」的連結就可以直接下載了 ~
歡迎光臨 PALMisLIFE 討論區 (http://f.pil.tw/)
Powered by Discuz! X2.5