最近要做这方面的东西,从客户端往服务器上传文件时候实现断点续传。
在网上查过很多资料,都是实现的下载时候断点续传。
似乎用post上传的时候都是从文件头开始传,而大型网站上传都是用的浏览器控件之类实现的
来请教一下高手,php有没有这样的功能啊,或者php结合其他语言,不如java之类的,能不能不用控件就能实现断点上传的
在网上查过很多资料,都是实现的下载时候断点续传。
似乎用post上传的时候都是从文件头开始传,而大型网站上传都是用的浏览器控件之类实现的
来请教一下高手,php有没有这样的功能啊,或者php结合其他语言,不如java之类的,能不能不用控件就能实现断点上传的
同时向服务器传送被分割的n个文件,
最后,在服务器把传过来的n个文件组合起来争一个——上传成功。
这种功能在普通的浏览器上开发的话不太现实,但是后台程序的话是可以的。用PHP的话lz可以web服务的方式,向服务器传送文件,服务器接收文件再组合起来,
原理跟TCP协议通信是一样的。在客户端如果没有要求特别的多线程功能,PHP完全可以实现这些功能,无论是客户端还是服务器端。
lz是否能实现就得看你对HTTP通信协议的理解程度和PHP/编程的功底了。
提问者的意思应该是使用浏览器上传文件,PHP服务端处理
用JavaScript把2进制文件转换成base64,
把转换后的base64文字串分割成适当长度的n段。
在每段字串中加入可以识别文件的名称、顺序等头信息(必要的话可以加密),
把各个段发送到服务器,服务器根据头信息把所有的字串组合起来,
最后反编译base64,储存成普通文件。理论上可以实现。
如果对原理还有疑问,可以参考TCP协议的说明。
关于base64转换可以看看这里
http://user1.matsumoto.ne.jp/~goma/js/base64.html
HTTP协议支持断点下载,但是不支持断点上传。
你所要实现的功能是HTTP不具备的,要么自己开发,要么找到其他类库。说实话,我还听说过更没见过需要断点上传的web系统。因为HTTP协议并不是用来传送大文件的,把小文件分割传送,
除了降低通信效率之外,不会带来什么好处。
lz想要这种功能,还不想自己开发,那就只能祝你好运了。