当前位置: 代码迷 >> CGI >> 请问大文件上载
  详细解决方案

请问大文件上载

热度:8437   发布时间:2013-02-26 00:00:00.0
请教大文件下载
客户端是纯HTML代码,点击链接后从服务器端下载文件。我现在服务器端是这么处理的:
HTTP 1/1 200 OK
Content-Length=500
Content-Type=application/octet-stream 
Content-disposition:attachment;filename="1.zip"
以上HTTP头之后接上我读出的文件流后客户端浏览器便能出现下载框了。

现在的问题是,上面的代码好像只能处理小文件,当有大文件下载时必须要分多次断点下载。此时服务器端应该要返回怎样的信息给客户端浏览器呢?客户端只有纯HTML页面,头痛死了。。
------最佳解决方案--------------------------------------------------------
要实现断点续传, 向服务器发出的 http 请求需要包含 range 头, 指定要下载的片断的起始和终止位置. 如:
Range:bytes=1000-2000

服务器根据 range 指示返回指定部分的片断.
------其他解决方案--------------------------------------------------------
该回复于2010-04-29 12:29:23被版主删除
------其他解决方案--------------------------------------------------------
关注。。。
------其他解决方案--------------------------------------------------------
分成几个小文件分开下载

------其他解决方案--------------------------------------------------------
补充一个问题啊:
客户端浏览器下载框出现后选择取消的话,服务器端还是会继续传文件。。这个要怎么解决??
------其他解决方案--------------------------------------------------------
引用:
补充一个问题啊:
客户端浏览器下载框出现后选择取消的话,服务器端还是会继续传文件。。这个要怎么解决??


你的下载方法不对吧,怎么会取消了还能下载呢?
------其他解决方案--------------------------------------------------------
直接下载不行吗?
<script>location.href='1.zip';</script>
或者
<iframe src="1.zip" style="display:none"></iframe>
------其他解决方案--------------------------------------------------------
断点续传就得找JavaScript做配合了,我想不到其它办法了。


------其他解决方案--------------------------------------------------------
我最近在用boa给一个嵌入式产品编写控制台,也想问一下boa上下载文件的代码编写,
printf("Content-Disposition:attachment;filename=\"Sysbak.tgz\" ");
printf("Content-Length:%d",1024);
printf("Content-Type:application/octet-stream %c %c\n\n",10,10);
现在问题是如果是几K的文件还可以完整下下来,但是我的Sysbak.tgz有100多K,点下载弹出的文件下载框
名称:sysbaktgz
类型:HTML Document,2字节
发送者:192.168.100.136
下下来只有2字节,请教高手这个文件下载的http头要如何写呢
------其他解决方案--------------------------------------------------------
文件大小的关系应该不大,应该是文件格式的关系 如果是文本文件的话我试着下了一个txt,123k的可以下下来,但是.tgz格式的文件就不行,请问.tgz的文件要如何下载呢?二进制的文件要如何下载
------其他解决方案--------------------------------------------------------
首先要支持.TGZ文件
  相关解决方案