用一個動態頁面引導到一個下載地址,最后客戶端下載到一個不同的文件,怎么實現的?

Rayking 2003-09-12 04:02:49
有的網站用一個動態頁面引導到一個下載地址最后客戶端得到一個不同的文件,怎么實現的?
比方下面這個地址:
http://www.deskcity.com/show.asp?101722
它指向的不是一個可顯示的頁面,而是一個下載MP3皮膚面板的ZIP包,這是怎么實現的呢?
...全文
134 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rayking 2003-09-12
  • 打赏
  • 举报
回复
是的,这个还在用,相信大部分的客户端程序员都会考虑到迁就到这个问题,但是服务端的程序员则应该尽力避免使用这个了,向中间靠笼嘛。

我目前是客户端程序员。问题我已经解决了,至于怎么解决我不方便说明,如果大家不是桌面程序员也不必关心了。
在PHP版也有这个问题:
http://expert.csdn.net/Expert/topic/2253/2253203.xml?temp=2.683657E-02
除了在这里接分,大家还可以到那里去接,那贴明天上班时结。
balloy 2003-09-12
  • 打赏
  • 举报
回复
Content-Disposition废弃了吗?我还不知道,不过,要废弃也是几年后的是把,至少现在的IIS还是支持的,

你试试
Response.AddHeader "Content-Disposition", "attachment; filename=test.zip"

就会看到结果了
Rayking 2003-09-12
  • 打赏
  • 举报
回复
另,Content-Disposition在MSDN里說明為obsolete(廢止)
Rayking 2003-09-12
  • 打赏
  • 举报
回复
balloy:
我想了解的是文件名,不是TITLE。
我寫程序導出了http://www.deskcity.com/show.asp?101722這頁發送的所有header,其中Content-Disposition這項為空,可見并不這么簡單。

以下是該頁的header(其中第47項為Content-Disposition):
Level: 0 Content: empty!
Level: 1 Content: application/x-zip-compressed
Level: 2 Content: empty!
Level: 3 Content: empty!
Level: 4 Content: empty!
Level: 5 Content: 649468
Level: 6 Content: empty!
Level: 7 Content: empty!
Level: 8 Content: empty!
Level: 9 Content: Fri, 12 Sep 2003 09:32:45 GMT
Level: 10 Content: empty!
Level: 11 Content: Sat, 21 Jun 2003 14:29:03 GMT
Level: 12 Content: empty!
Level: 13 Content: empty!
Level: 14 Content: empty!
Level: 15 Content: empty!
Level: 16 Content: empty!
Level: 17 Content: empty!
Level: 18 Content: HTTP/1.1
Level: 19 Content: 200
Level: 20 Content: OK
Level: 21 Content: HTTP/1.1 200 OK
Level: 22 Content: HTTP/1.1 200 OK

Via: 1.1 WYITD

Proxy-Connection: Keep-Alive

Content-Length: 649468

Content-Type: application/x-zip-compressed

Server: Microsoft-IIS/5.0

Date: Fri, 12 Sep 2003 09:32:45 GMT

Accept-Ranges: bytes

Last-Modified: Sat, 21 Jun 2003 14:29:03 GMT

ETag: "a615b77138c31:8b1"




Level: 23 Content: empty!
Level: 24 Content: empty!
Level: 25 Content: empty!
Level: 26 Content: empty!
Level: 27 Content: empty!
Level: 28 Content: empty!
Level: 29 Content: empty!
Level: 30 Content: empty!
Level: 31 Content: empty!
Level: 32 Content: empty!
Level: 33 Content: empty!
Level: 34 Content: empty!
Level: 35 Content: empty!
Level: 36 Content: empty!
Level: 37 Content: Microsoft-IIS/5.0
Level: 38 Content: empty!
Level: 39 Content: empty!
Level: 40 Content: empty!
Level: 41 Content: empty!
Level: 42 Content: bytes
Level: 43 Content: empty!
Level: 44 Content: empty!
Level: 45 Content: GET
Level: 46 Content: empty!
Level: 47 Content: empty!
Level: 48 Content: empty!
Level: 49 Content: empty!
Level: 50 Content: empty!
Level: 51 Content: empty!
Level: 52 Content: empty!
Level: 53 Content: empty!
Level: 54 Content: "a615b77138c31:8b1"
Level: 55 Content: empty!
Level: 56 Content: empty!
Level: 57 Content: empty!
Level: 58 Content: empty!
Level: 59 Content: empty!
Level: 60 Content: empty!
Level: 61 Content: empty!
Level: 62 Content: empty!
Level: 63 Content: empty!
Level: 64 Content: empty!
Level: 65 Content: empty!
Level: 66 Content: 1.1 WYITD
Level: 67 Content: empty!
Level: 68 Content: empty!
Level: 69 Content: Keep-Alive
Level: 70 Content: empty!
Level: 71 Content: empty!
Level: 72 Content: empty!
Level: 73 Content: empty!
Level: 74 Content: empty!
Level: 75 Content: empty!
Level: 76 Content: empty!
Level: 77 Content: empty!
balloy 2003-09-12
  • 打赏
  • 举报
回复
to Rayking(雷廷) :
你把 Function DownloadFile(strFile) 改为
Function DownloadFile(strFile, strFileTitle) ,并修改相应调用不就可以了吗?
富察咪咪 2003-09-12
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2235/2235841.xml?temp=.9666712
nbshiny 2003-09-12
  • 打赏
  • 举报
回复
试问一下,一些下载软件的下载地址你看到的都是以show.asp结尾的,然后在flashget里他又会转换为zip文件,这个通过什么来转换的,难道他们想把具体的下载地址给hide
Rayking 2003-09-12
  • 打赏
  • 举报
回复
我最想知道的是怎樣提供新的文件名
除了
Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.name

還有別的辦法嗎?
balloy 2003-09-12
  • 打赏
  • 举报
回复
<%@ Language=VBScript %>
<% Option Explicit %>
<% Response.Buffer = True %>
<%

'##############################################
Dim strFileName

strFileName = "c:\test.zip"

Call DownloadFile( strFileName )

Function DownloadFile(strFile)

Dim strFileName, objFs, objAdoStream, objFile, intFilelength

strFileName = strFile

' clear the buffer
Response.Buffer = True
Response.Clear

' create stream
Set objAdoStream = Server.CreateObject("ADODB.Stream")
objAdoStream.Open

' Set as binary
objAdoStream.Type = 1

' load in the file
On Error Resume Next

' check the file exists
Set objFs = Server.CreateObject("Scripting.FileSystemObject")
If Not objFs.FileExists(strFileName) then
Response.Write("<h1>Error:</h1>" & strFileName & " does not exist<p>")
Response.End
End If

' get length of file
Set objFile = objFs.GetFile(strFileName)
intFilelength = objFile.size


objAdoStream.LoadFromFile(strFileName)
if Err.Number > 0 then
Response.Write("<h1>Error: </h1>" & Err.Description & "<p>")
Response.End
end if

' send the headers to the users browser
Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.name
Response.AddHeader "Content-Length", intFilelength
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"

' output the file to the browser
Response.BinaryWrite objAdoStream.Read
Response.Flush


' tidy up
Set objFile = Nothing
Set objFs = Nothing
objAdoStream.Close
Set objAdoStream = Nothing
End Function
%>
Rayking 2003-09-12
  • 打赏
  • 举报
回复
Brookes:
好像有問題。
這樣的話客戶端得到的是什么文件名呢?應該是一個*.ZIP才對,你這樣好像還是show.asp不變吧。因為我根本沒看到你有提到文件名。
Brookes 2003-09-12
  • 打赏
  • 举报
回复
show.asp
<%
Response.Buffer = true
Response.Clear

id=trim(request("id"))
If id<>"" then downfile="someHtml"
fileurl=server.MapPath(dlfile)
以下使用fso读取文件,再用stream写回到客户端,实现下载
这样做主要是为了保护要下载的文件,不让用户得到其资源位置

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧