用stream直接下载文件

stream|下载

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

下面详细说明方法2

<%
Response.Buffer=true
Response.Clear

dimurl
Dimfso,fl,flsize
dimDname
DimobjStream,ContentType,flName,isre,url1
'*********************************************调用时传入的下载文件名
Dname=trim(request("n"))
'******************************************************************
IfDname<>""Then
'******************************下载文件存放的服务端目录
url=server.MapPath("/")&""&Dname
'***************************************************
EndIf

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

SelectCaselcase(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"
CaseElse
ContentType="application/octet-stream"
EndSelect

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

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

Response.BinaryWriteobjStream.Read
Response.Flush
response.Clear()
objStream.Close
SetobjStream=Nothing

%>

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

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

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

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

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

时间: 2024-11-30 16:16:12

用stream直接下载文件的相关文章

利用stream直接下载文件

stream|下载 在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里.而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:1.设置你的服务器的iis,给doc等后缀名做映射2.在向客户端发送时设置其contenttype 下面详细说明方法2 <%Response.Buffer = trueResponse.Clear dim url Dim fso,fl,flsize dim Dname Dim objStre

利用adodb.stream直接下载任何后缀的文件(防盗链)

ado|stream|防盗链|下载 原作:possible_Y,载自时代课堂 在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里.而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:1.设置你的服务器的iis,给doc等后缀名做映射2.在向客户端发送时设置其contenttype 下面详细说明方法2 <%Response.Buffer = trueResponse.Clear dim urlDim fso,fl,

ASP利用adodb.stream下载文件但不打开的方法

 在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里.而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:  1.设置你的服务器的iis,给doc等后缀名做映射. 2.在向客户端发送时设置其contenttype. 下面详细说明方法2 程序代码: 复制代码 代码如下: <% Response.Buffer = true Response.Clear dim url Dim fso,fl,flsize dim Dn

使用asp下的adodb.stream 下载文件而不是打开_小偷/采集

在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里.而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:  1.设置你的服务器的iis,给doc等后缀名做映射. 2.在向客户端发送时设置其contenttype.  下面详细说明方法2  程序代码:  复制代码 代码如下: <% Response.Buffer = true Response.Clear dim url Dim fso,fl,flsize dim 

c#使用线程下载文件的控制技巧和缺陷

技巧|控制|下载 //c#使用线程下载文件的控制技巧和缺陷 //系统引用//定义线程公共变量//开始线程下载文件//中止线程下载 //系统引用 using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Net; using System.IO;using System.Text;using System

C#用线程传参下载文件的代码

下载 using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Net; using System.IO;using System.Text;using System.Threading; private void button6_Click(object sender, System.EventArg

通过Web Services上传和下载文件

services|web|上传|下载 随着Internet技术的发展和跨平台需求的日益增加,Web Services的应用越来越广,我们不但需要通过Web Services传递字符串信息,而且需要传递二进制文件信息.下面,我们就分别介绍如何通过Web Services从服务器下载文件到客户端和从客户端通过Web Services上载文件到服务器. 一:通过Web Services显示和下载文件 我们这里建立的Web Services的名称为GetBinaryFile,提供两个公共方法:分别是Ge

浅谈Struts2下载文件的方法实现

Struts2下载文件实现的说明 contentType 内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML, image/gif代表GIF图片,image/jpeg代表JPG图片 inputName 下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的 属性需要编写getInputStream()方法 contentDisposition 文件下载的处理方式,包括内联(i

Python实现批量下载文件

  之前给大家分享的python 多线程抓取网页,不过这个只能用python 来抓取到网页的源代码,如果你想用做python 下载文件的话,上面的可能就不适合你了,最近我在用python 做文件下载的时候就遇到这个问题了,不过最终得以解决,我把代码发出来 Python实现批量下载文件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38