打开.csv(Excel格式)文件时如果使浏览器提示下载,而不是直接在浏览器中打开?

jarodzhao 2006-09-06 11:18:55
rt
...全文
2674 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
look4sword 2006-09-15
  • 打赏
  • 举报
回复
以下另存为:DOWNLOAD.HTM

<a href=download.asp?filename=download.asp>guid.asp</a>

以下另存为:DOWNLOAD.ASP

<%@language=VBscript%>
<%
Const ForReading=1
Const TristateTrue=-1
Const FILE_TRANSFER_SIZE=16384
Response.Buffer = True
Function TransferFile(path, mimeType, filename)
Dim objFileSystem, objFile, objStream
Dim char
Dim sent
send=0
TransferFile = True
Set objFileSystem = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFileSystem.GetFile(Path)
Set objStream = objFile.OpenAsTextStream(ForReading, TristateTrue)
Response.AddHeader "content-type", mimeType
response.AddHeader "Content-Disposition","attachment;filename=" & filename
Response.AddHeader "content-length", objFile.Size
Do While Not objStream.AtEndOfStream
char = objStream.Read(1)
Response.BinaryWrite(char)
sent = sent + 1
If (sent MOD FILE_TRANSFER_SIZE) = 0 Then
Response.Flush
If Not Response.IsClientConnected Then
TransferFile = False
Exit Do
End If
End If
Loop
Response.Flush
If Not Response.IsClientConnected Then TransferFile = False
objStream.Close
Set objStream = Nothing
Set objFileSystem = Nothing
End Function
Dim path, mimeType, sucess,downfilename
downfilename=request("filename")
path = Server.MapPath(downfilename)
mimeType="text/plain"
sucess = TransferFile(path, mimeType,downfilename)
Response.End
%>

--------------------------------------------------------

自己看着用。
Jaron 2006-09-14
  • 打赏
  • 举报
回复
是要生成,还是要让浏览器提示下载?
panzi667 2006-09-14
  • 打赏
  • 举报
回复
实现文件下载而不是由ie打开的代码。
http://www.woyaola.net/Article/2420.html
dfzz1 2006-09-14
  • 打赏
  • 举报
回复
patchclass(黑翼)的方法可以的
把这句话加在你正式编码的前面就可以了
jarodzhao 2006-09-14
  • 打赏
  • 举报
回复
撞墙ing...
csv 文件已经生成,现在需要的是在客户端的机器上下载已生成的这个csv文件

我的代码是这样的:
'------------------------------------------
SQL = session("sql") '这个是 sql 语句,下面那个 ToExcel 函数用的

ff = ToExcel(SQL) '这个是自编函数,将 sql 语句生成 csv 文件,并返回文件和路径(相对路径)

ff = Replace(ff,"\","/")


'至此,提示用户下载刚刚生成的 csv 文件(但总是在 ie 打开,却不是下载?!)
R "<script>window.open('" & ff & "');self.close();</script>"



'这句是patchclass(黑翼)提供的,但是下载的却不是那个csv,而是当前页面这个文件
Response.AddHeader "content-Disposition","attachment;filename=" & ff
jarodzhao 2006-09-13
  • 打赏
  • 举报
回复
其实我的目的是将某个记录集生成为 csv 文件,并提供给用户下载
因为是记录集转 excel,而不是将某个字段转为 csv 文件

所以,我的方法是先在服务器生成一个csv文件
然后再导向这个文件的地址,最终提供用户下载此文件即算成功!

肯请高手指定一二,思路是否有误?
jarodzhao 2006-09-13
  • 打赏
  • 举报
回复
奇怪的是,用自己的机子测试
访问某网上银行时,那上面的 csv 文件提示的是下载(用IE)
但是自己机子发布的站点用 redirect 转向 csv 地址时却直接在 ie 里打开了

应该与IE无关,同是一台机子,都用IE
第一种情况提示的是下载,第二种情况却是直接打开了?!

头大~
jarodzhao 2006-09-13
  • 打赏
  • 举报
回复
net205说的不错,csv 文件的确是已生成
panzi667 2006-09-13
  • 打赏
  • 举报
回复
http://www.woyaola.net/Article/asp/200609/3816.html
net205 2006-09-13
  • 打赏
  • 举报
回复
楼主那是已经生成csv文件了,所以估计好像没办法,这跟客户端浏览相关,如果client的ie装了excel会直接打开csv文件,否则弹出保存的窗口

mark看
Jaron 2006-09-13
  • 打赏
  • 举报
回复
以下是一个从数据库中读取的示例,自己可以改一下,用FSO读出

<%
on error resume next
set rs=Server.CreateObject("ADODB.Recordset")
sql="select * from tblBinFiles where FileID='" & checkstr(request("FileID")) &"'"
rs.open sql,conn,1,3
if not(rs.EOF and rs.BOF or isnull(rs("Bin"))) then
Response.ContentType = getContentType(rs("FileExt"))
if GetFileType(rs("fileext")) <> 1 then Response.AddHeader "content-disposition", "attachment; filename=YZGA_" & rs("FileID")
Response.BinaryWrite rs("Bin").getChunk(7500000)
Response.Flush
response.Clear()
viewtimes = rs("viewtimes") + 1
rs.Update
rs("viewtimes") = viewtimes
rs.Update
else
Response.Write "无效的数据格式"
end if
rs.close
set rs=nothing
Response.Write Err.Description
conn.close
set conn = nothing

function getContentType(fileExt)
Select Case lcase(FileExt)
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","asp","asa", "aspx", "asax"
ContentType = "text/plain"
Case Else
ContentType = "application/octet-stream"
End Select
getContentType = ContentType
end function

function GetFileType(fileext)
'判断文件类型
if lcase(fileExt)="gif" or lcase(fileExt)="jpg" or lcase(fileExt)="jpeg" or lcase(fileExt)="bmp" or lcase(fileExt)="png" then
GetFileType=1
elseif lcase(fileExt)="swf" or lcase(fileExt)="swi" then
GetFileType=2
elseif lcase(fileExt)="mid" or lcase(fileExt)="wav" or lcase(fileExt)="mp3" or lcase(fileExt)="rmi" or lcase(fileExt)="cda" then
GetFileType=3
elseif lcase(fileExt)="avi" or lcase(fileExt)="wov" or lcase(fileExt)="asf" or lcase(fileExt)="mpg" or lcase(fileExt)="mpeg" or lcase(fileExt)="ra" or lcase(fileExt)="ram" then
GetFileType=4
else
GetFileType=0
end if
end function

Function CheckStr(str)
If IsNull(str) Then
CheckStr = ""
Exit Function
End If
CheckStr = Replace(str, "'", "''")
End Function
%>
patchclass 2006-09-12
  • 打赏
  • 举报
回复
如果还是不下载,那么就
其中flName 是你要对方下载时候的文件名字
Response.AddHeader "content-Disposition","attachment;filename=" & flName
patchclass 2006-09-12
  • 打赏
  • 举报
回复
在程序开始加上
response.ContentType = "application/vnd.ms-excel"
jarodzhao 2006-09-12
  • 打赏
  • 举报
回复
楼上的方法会打开一个新窗口,显示“该页无法显示”后才弹出那个下载窗口
而且文件类型这里显示的仍是 网页另存的那种类型(就是*.htm)

难道真的这么难吗?!!!!!


再加80分,召唤高人出现...
rehearts 2006-09-12
  • 打赏
  • 举报
回复
response.ContentType = "application/vnd.ms-excel"
jarodzhao 2006-09-12
  • 打赏
  • 举报
回复
请问楼上的,那两句代码应该加到什么地方?
我的代码是这样的:

[a.asp]
ff = '最终获取的文件名(*.csv)
Response.Redirect Server.MapPath(ff)

我应该加到哪里?!
RexZheng 2006-09-08
  • 打赏
  • 举报
回复
<SCRIPT language="JScript">
function Down()
{
var win = window.open("1.csv");
win.document.execCommand("saveas","","1.csv");
win.close();
}
</SCRIPT>
<button onclick="Down()">Download</button>
是是非非 2006-09-06
  • 打赏
  • 举报
回复
用ADODB.Stream做下载

或者直接在IIS里面删除csv这个扩展名的mime type
jarodzhao 2006-09-06
  • 打赏
  • 举报
回复
ADODB.Stream 那个有点繁琐了

IIS 中 MIME 映射中也并无 csv 这个类型,这儿显示的没有一个映射。。。怪

28,409

社区成员

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

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