激战2元素闪现在哪:(100分)(JAVA|VB)SCRIPT:如何把页内图片用FSO或ADO保存起来?

来源:百度文库 编辑:高校问答 时间:2024/05/03 13:00:29
如题,某网页只有一张图片,如何不使用XMLHTTP把这张图片保存到指定的地址(因为指定图片存在来源验证,无法在本地使用XMLHTTP获得!),权限不是问题,用HTA格式应该不存在这个问题!

代码用JAVASCRIPT或者VBSCRIPT都可以!

补充:
我现在只想到利用IE的缓存穷搜索办法来获得这张图片,但是一些ASP载入的图片却是出现文件名重名现象,如:sendjpg.asp?id=1 和 sendjpg.asp?id=2 这两张不同图片却在IE缓存里使用同一文件名,无法辩别!

谁能帮我想个办法,解决掉IE缓存的问题或者另用新方法都可以!解决了补送100分!
^_^

谢谢回答!你的代码是对服务端的文件用流方式输出到客户端让其弹出下载窗口!

但这不是我的要求,我要下载的图片是从别的网站自动下载到指定本地目录里(而下面的代码是从本机服务器下载),并不需要弹出下载窗口!就像流水线一样!而且我的是本地执行,而下面的代码是网络执行!

说说我的目的吧:我是想要做一个小说下载工具,通过网站的小说地址,把各个文章包括里面的图片一起下载到本地目录,但是对方网站的图片被加了来源验证,无法直接用XMLHTTP获取,所以得另想办法!

不过还是谢谢你的回答,我连发了三次都没人理采!可怜啊~~~

不知道这样的文章对你有没有帮助

////////////////////////////

利用stream直接下载文件

来源:csdn

在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里。而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:
1、设置你的服务器的iis,给doc等后缀名做映射
2、在向客户端发送时设置其contenttype

下面详细说明方法2

<%
Response.Buffer = true
Response.Clear

dim url
Dim fso,fl,flsize
dim Dname
Dim objStream,ContentType,flName,isre,url1
'*********************************************调用时传入的下载文件名
Dname=trim(request("n"))
'******************************************************************
If Dname<>"" Then
'******************************下载文件存放的服务端目录
url=server.MapPath("/")&""&Dname
'***************************************************
End If

Set fso=Server.CreateObject("Scripting.FileSystemObject")
Set fl=fso.getfile(url)
flsize=fl.size
flName=fl.name
Set fl=Nothing
Set fso=Nothing
%>
<%
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile url

Select Case lcase(Right(flName, 4))
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 ".txt"
ContentType = "text/plain"
Case Else
ContentType = "application/octet-stream"
End Select

Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "Content-Length", flsize

Response.Charset = "UTF-8"
Response.ContentType = ContentType

Response.BinaryWrite objStream.Read
Response.Flush
response.Clear()
objStream.Close
Set objStream = Nothing

%>

将下面的东西存成download.asp然后你就可以用<a herf="http://xxx.xxx.com/download.asp?n=file.doc">download!</a>来下载同一目录下的file.doc了!

但是这里有个问题就是直接将file.doc路径写在url里是不安全的,所以解决方案应该是将file.doc的路径存到数据库里,同过查找数据库后得到路径

在这个程序的最前面如果加上一个判断:

if instr(Request.ServerVariables("HTTP_REFERER"),"http://你的域名")=0 then
Response.End
end if

就能够很好的防止别人的盗链了