日期:2014-05-17  浏览次数:21005 次

100分求代码:ASP打开一个远程文件http://xxx.xxx.xxx.xxx/adfa/adsfasd/ad.* 不要在游览器中打开,而是弹出框让人下载/保存
ASP
打开一个远程文件http://xxx.xxx.xxx.xxx/adfa/adsfasd/ad.*  
主要是.pdf   .doc   .exe   .zip   .rar等文件


所有类型的文件都不要在游览器中打开,而是弹出框让人下载/保存

不要让人可以很容易的拷贝到远程文件的地址,

------解决方案--------------------
远程文件无法这么实现
除非是你自己的服务器

本地的话就好实现了
------解决方案--------------------
好像不可能
------解决方案--------------------
服务器先下载该文件。
------解决方案--------------------
window.open
个没URL的窗体
------解决方案--------------------
Const ForReading=1
Const TristateTrue=-1 'Unicode
Const FILE_TRANSFER_SIZE=16384 '16k

b = TransferFile( "C:\abc\abc.doc ", "application/octet-stream ", "newFileName.doc ")

Function TransferFile(path, mimeType, filename)
Dim objFileSystem, objFile, objStream
Dim char
Dim sent
sent=0
TransferFile = True
Set objFileSystem = Server.CreateObject( "Scripting.FileSystemObject ")
Set objFile = objFileSystem.GetFile(Path)
Set objStream = objFile.OpenAsTextStream(ForReading, TristateTrue)
With Response
.Charset= "GB2312 "
.ContentType=mimeType
.AddHeader "Accept-Ranges ", "bytes "
.AddHeader "Content-Length ", objFile.Size
.AddHeader "Content-Type ", mimeType
.AddHeader "Content-Disposition ", "attachment; filename= " & filename
End With
With objStream
Do While Not .AtEndOfStream
char = .Read(FILE_TRANSFER_SIZE)
With Response
.BinaryWrite(char)
sent = sent + FILE_TRANSFER_SIZE
If (sent MOD FILE_TRANSFER_SIZE) = 0 Then
.Flush
If Not .IsClientConnected Then
TransferFile = False
Exit Do
End If
End If
End With
Loop
End With
Response.Flush
If Not Response.IsClientConnected Then TransferFile = False

objStream.Close
Set objStream = Nothing
Set objFile =Nothing
Set objFileSystem = Nothing
End Function
------解决方案--------------------
学习中,好像不可以
------解决方案--------------------
你的意思是说让人能下载 但不想让他找到地址是吗? 我有个想法 ,可不可以做个类似md5加密
解密的这样就不容易找到原地址了 瞎想的 呵呵
------解决方案--------------------
楼上的玩笑了,好好补习补习,MD5能解密?
即使能解密,你如何对地址加密使它能让HTTP准确的指向文件?

目前这种的实现方法就是读取文件内容,然后直接Response出来,这样并不暴露原文件地址
同hookee()的方法一样,但是只能是本地文件
至于远程服务器要么有第3方组件支持,要么你只提供小文件下载(这样就可以将远程文件传输倒本地,再Response)
------解决方案--------------------
up
------解决方案--------------------
如果想不让人知道下载地址,可以这样子哈

做一个表单,隐藏一下idValue,做一个按扭,点击以后传递id到ASP页面,再由ASP页面redirect到url,这样就直接用IE的下载窗口,看不到URL了


之所以要做表单,是因为直接用链接的话,用一些下载软件,很容易就得到URL了,而IE自带的下载工具,看不到!
------解决方案--------------------
下载页面形式代码
down.asp?id=
别人只会看到这个页面地址,实际的文件地址通过查询数据库获得

------解决方案--------------------
不能用 redirect

会发302 会被抓包看到的.

hookee() ( ) 信誉:100 2007-7-12 18:08:08 得分: 0