最近要做这方面的东西,从客户端往服务器上传文件时候实现断点续传。
在网上查过很多资料,都是实现的下载时候断点续传。
似乎用post上传的时候都是从文件头开始传,而大型网站上传都是用的浏览器控件之类实现的
来请教一下高手,php有没有这样的功能啊,或者php结合其他语言,不如java之类的,能不能不用控件就能实现断点上传的

解决方案 »

  1.   

    实现方法就是把文件在本地先分割n部分,
    同时向服务器传送被分割的n个文件,
    最后,在服务器把传过来的n个文件组合起来争一个——上传成功。
    这种功能在普通的浏览器上开发的话不太现实,但是后台程序的话是可以的。用PHP的话lz可以web服务的方式,向服务器传送文件,服务器接收文件再组合起来,
    原理跟TCP协议通信是一样的。在客户端如果没有要求特别的多线程功能,PHP完全可以实现这些功能,无论是客户端还是服务器端。
    lz是否能实现就得看你对HTTP通信协议的理解程度和PHP/编程的功底了。
      

  2.   

    "实现方法就是把文件在本地先分割n部分",这个可行吗(我是指在不对浏览器端作任何处理,比如安装ActiveX)?
    提问者的意思应该是使用浏览器上传文件,PHP服务端处理
      

  3.   

    理论上是可以的!!看你对http的理解程序
      

  4.   


    用JavaScript把2进制文件转换成base64,
    把转换后的base64文字串分割成适当长度的n段。
    在每段字串中加入可以识别文件的名称、顺序等头信息(必要的话可以加密),
    把各个段发送到服务器,服务器根据头信息把所有的字串组合起来,
    最后反编译base64,储存成普通文件。理论上可以实现。
    如果对原理还有疑问,可以参考TCP协议的说明。
    关于base64转换可以看看这里
    http://user1.matsumoto.ne.jp/~goma/js/base64.html
      

  5.   

    呵呵,这个问题我认为光对HTTP理解是不行的,还有一个问题是在浏览器上我们哪些事情干不了的问题.这个问题如果能够解决,很重要的一点是突破读文件的权限限制(我是指在不让用户去修改浏览器设置啊,安装ActiveX等)的情况.
      

  6.   


    HTTP协议支持断点下载,但是不支持断点上传。
    你所要实现的功能是HTTP不具备的,要么自己开发,要么找到其他类库。说实话,我还听说过更没见过需要断点上传的web系统。因为HTTP协议并不是用来传送大文件的,把小文件分割传送,
    除了降低通信效率之外,不会带来什么好处。
    lz想要这种功能,还不想自己开发,那就只能祝你好运了。
      

  7.   

    http协议是做不了的,利用ftp协议做断点续传吧。要自己写其它的类库。。
      

  8.   

    不知道flash能不能做这种功能,楼主可以看看flash这方面的。
      

  9.   

    163邮箱,里面有个截图功能,你第一次使用,要下载一些cab包安装。里面就提供断点续传的功能,楼主可以参考下。