账号通
    

账号  

密码  

4371

查看

9

回复
主题:[分享]V8.0x 下载系统及论坛下载大文件出错损坏的修改方法 [收藏主题] 转到:  
科汛官方 当前离线

47268

主题

145

广播

405

粉丝
添加关注
级别:管理员

用户积分:101604 分
登录次数:7935 次
注册时间:2006/12/7
最后登录:2023/12/14
科汛官方 发表于:2011/12/1 11:18:12   | 显示全部帖子 查看该作者主题 楼主 
科汛智能建站系统

出错参考:http://bbs.kesion.com/forumthread-278623.html



下载系统的修改文件为



item/download.asp



找到代码

  Sub downloadFile(strFile,FileOldName)

   On error resume next

   Server.ScriptTimeOut=999999

   Dim S,fso,f,intFilelength,strFilename,DownFileName

   strFilename = strFile

   Response.Clear

   Set s = Server.CreateObject("ADODB.Stream")

   s.Open

   s.Type = 1

   Set fso = Server.CreateObject("Scripting.FileSystemObject")

   If Not fso.FileExists(strFilename) Then

     Response.Write("<h1>错误: </h1><br>系统找不到指定文件")

     Exit Sub

   End If

   Set f = fso.GetFile(strFilename)

     intFilelength = f.size

     s.LoadFromFile(strFilename)

     If err Then

      Response.Write("<h1>错误: </h1>" & err.Description & "<p>")

      Response.End

     End If

     Set fso=Nothing

     Dim Data

     Data=s.Read

     s.Close

     Set s=Nothing

     If FileOldName="" Or IsNull(FileOldName) Then DownFileName=f.name Else DownFileName=FileOldName

     If Response.IsClientConnected Then

      Response.AddHeader "Content-Disposition", "attachment; filename=" &  DownFileName

      Response.AddHeader "Content-Length", intFilelength

      Response.CharSet = "UTF-8"

      Response.ContentType = "application/octet-stream"

      Response.BinaryWrite Data

      Response.Flush

     End If

   End Sub

修改为:



Sub downloadFile(strFile,FileOldName)

   Dim fso,f,intFilelength,strFilename,DownFileName

   Set fso = Server.CreateObject("Scripting.FileSystemObject")

   If Not fso.FileExists(strFile) Then

     Response.Write("<h1>错误: </h1><br>系统找不到指定文件")

     Exit Sub

   End If

   Set f = fso.GetFile(strFile)

   Set fso=Nothing

      If KS.IsNul(FileOldName) Then DownFileName=f.name Else DownFileName=FileOldName

      Dim Stream,offset,TotalSize,ChunkSize ,strChunk

   Response.Buffer=False '将Response.Buffer设为否

   Response.ContentType = "application/octet-stream"

   response.AddHeader "Content-Disposition","attachment;filename=" & DownFileName

   Set Stream = Server.CreateObject("ADODB.Stream")

   Stream.type=1

   Stream.Open

   Stream.LoadFromFile strFile

   offset = 0

   ChunkSize = 2048*1024 'ChunkSize小于IIS配制文件中的AspBufferingLimit项所设置的大小

   TotalSize = Stream.Size

   while offset < TotalSize

   if (TotalSize - offset < ChunkSize) then

   ChunkSize = TotalSize-offset

   end if

   strChunk = Stream.Read(ChunkSize)

   Response.BinaryWrite strChunk

   offset = offset + ChunkSize

   wend

   Stream.Close

  End Sub









如果是论坛里的下载附件,则修改



item/filedown.asp,修改方法和上面一样。





 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.06250秒 powered by KesionCMS 9.0