点击链接的时候,如何只在线打开,不下载呢?

D0244 2011-11-29 11:51:50
各位大侠,小弟遇到这么一个问题。

我们有一个文件管理系统,里面上传了很多txt、doc、ppt格式的东西,能否这些格式的,在点击它的链接地址时,只在线打开,但是不能下载呢,需要怎么进行代码操作?

谢谢各位达人!
...全文
408 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
D0244 2011-11-30
  • 打赏
  • 举报
回复
而且我现在一加上
.ContentType="xxxxx"
就提示要下载,去掉就可以直接在页面显示,这是何故啊?
hookee 2011-11-30
  • 打赏
  • 举报
回复
1 后面的参数可以不用。
2 doc之类的要用前端的控件,比如 word.open "xxx.asp?filename=xxx" 具体要查看控件的API
3 方案就是: 根据后缀在页面加载不同的控件,然后用控件的方法去打开文档

D0244 2011-11-30
  • 打赏
  • 举报
回复
Function TransferFile(ByRef oStream, sMimeType, sFilename)

这一句的后两个参数似乎没有用到啊。我希望能把sMimeType,也就是文件打开的方式传递进去,放在哪里合适呢?怎么添加代码呢?谢谢
D0244 2011-11-30
  • 打赏
  • 举报
回复
老大,你在啊,太好了。我现在注册了一个dll,把文件给读出来了,但是又有问题了。读txt显示出来是很正常的,但是doc文件就是乱码,这个能解决么?
hookee 2011-11-30
  • 打赏
  • 举报
回复
这只是个例子,不能直接拿来用的。
你可以把 oStream 改成 ADODB.Stream的,基本上就是 Set oSF那一段改一下,把文件加载到oStream中
后面 oStream.ReadBin 改成 oStream.Read就可以了
D0244 2011-11-30
  • 打赏
  • 举报
回复
老大,我昨天测试了一下,我把on error resume next注释掉以后,它先是提示“类型不匹配: 'Results'”,然后我注释掉了Results,它又提示“ActiveX 部件不能创建对象: 'newObjects.utilctls.SFMain'
/a/wwwroot/test/fileread.asp, 第 14 行”,一直没搞成功。

老大,这个该怎么弄?

hookee 2011-11-29
  • 打赏
  • 举报
回复
例子:

<%
With Response
.Buffer = True
.Expires = 0
End With
On Error Resume Next
Dim oSF, oStream
Dim sFilePath
sFilePath = Results("path")
Results.Clear
Session.Abandon

Set oSF = CreateObject("newObjects.utilctls.SFMain")
If Not oSF.FileExists(sFilePath) Then
Set oSF = Nothing
Response.Write sFilePath & "不存在。"
Response.End
End If
Set oStream = oSF.OpenFile(sFilePath, &H00000040)
Set oSF = Nothing

If Not TransferFile(oStream, "application/octet-stream", getFileName(sFilePath)) Then
Set oStream = Nothing
Response.Write "传递文件失败。"
Response.End
End If
Set oStream = Nothing


Function TransferFile(ByRef oStream, sMimeType, sFilename)
Dim iChar, iSent, iSize
Dim c
Const FILE_TRANSFER_SIZE = 1024000'32768 '32k

iSent = 0
TransferFile = True
iSize = oStream.Size
c = 0
Do While c <= iSize
iChar = oStream.ReadBin(FILE_TRANSFER_SIZE)
c = c + FILE_TRANSFER_SIZE
With Response
.BinaryWrite(iChar)
iSent = iSent + FILE_TRANSFER_SIZE
If (iSent MOD FILE_TRANSFER_SIZE) = 0 Then
.Flush
If Not .IsClientConnected Then
TransferFile = False
Exit Do
End If
End If
End With
Loop
Response.Flush
If Not Response.IsClientConnected Then TransferFile = False
Set oStream = Nothing
End Function

Function getFileName(sPath)
Dim iPos
Dim s
iPos = InStrRev(sPath,"\")
s = Right(sPath,Len(sPath)-iPos)
getFileName = s
End Function
%>
D0244 2011-11-29
  • 打赏
  • 举报
回复
嗯,我就是说假设这个客户端都赔了相应的软件,如office、记事本、PDF等等。我没明白,您说的用流输出文件是怎么回事?xxx.do?file=xx.xx,比方说我写成file=uploadfile\工作总结.doc,点击以后,他仍然是提示下载或者打开。

我是想能否点击后直接就打开,就不要提示下载什么的了,最好把“目标另存为”也干掉,呵呵
hookee 2011-11-29
  • 打赏
  • 举报
回复
1 下载用 xxx.do?file=xx.xx的形式,用流输出文件
2 客户端要相应的第三方控件支持,比如WebOffice可打开word,excel, pdf reader打开pdf

28,409

社区成员

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

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