所以我有一个文件传输网站,使用PHP和HTML5开发。本网站应该处理大量文件传输(100MB - 4GB文件大小)。 HTML5主要是将文件拆分为更小的尺寸。它适用于稳定连接。
然而,有几种情况,文件上传只是因为互联网连接突然断开并暂时开启而被切断。
我的主要问题是,无论如何在php或html5 / javascript ..来处理这类问题。例如:也许如果连接只停止几秒钟,脚本仍会继续运行,再次连接时,它会继续上传文件吗?
或者如果这样的事情是不可能的,那么无论如何都会检测到互联网下降,并显示警报(“互联网丢失”);类似的东西?
谢谢
答案 0 :(得分:1)
我最近遇到一个问题,涉及FTP上的大型二进制信号文件被辍学者破坏。随后,我们调查了FTP解决方案选项,使用基于Web的上传类似于您似乎正在寻找的那种处理方式。最强大的解决方案仍然是使用rsync实现和连续校验和。
也就是说,HTML5 API中似乎直接缺少的选项是能够在块本身中发送块的散列或校验和,以便透明地完成对数据blob的验证。 。
基本上你应该通过对切片数据进行一些处理并在发送之前将其与blob相结合来实现这一点。
while( start < SIZE ) {
var chunk = blob.slice(start, end);
//var chunkHash = chunk.ComputeHash(); // e.g. CRC32 or Adler
//chunk = chunkHash + chunk
uploadFile(chunk);
start = end;
end = start + BYTES_PER_CHUNK;
}
在另一端,你拉出前n个字节并计算其余的哈希值,然后将前n个字节与你的数据进行比较。
一些灵感的文章: 我认为uploading a file in chunks using html5是一个处理文件上传的好地方 how to merge chunks of file (result of html5 chunking) into one file fast and efficient
最后,可能值得调查已有的库并进行一些“退出”测试以确定最佳性能。 http://www.plupload.com/似乎有一些跟随(为此目的没有附属和未经测试)。