我们提供将图像提交到用户图库的功能。
虽然我们采用的常规方法效果很好,但有些人会上传多个文件,这可能需要很长时间,并且在选择过程中会很烦人(一次一个)。
我开始为使用Gears的人使用Gears编写替代方法。主要目标是替换文件选择,并为上传提供进度指示(这有助于减轻上传多个大文件时的挫折感。)
我完成了所有这些。
我在这里引用了Movie Uploader代码(http://uploadmovietool.appspot.com/),它演示了使用chunk方法上传文件。我正确地上传,服务器正在接受这些块,但是我遇到了一个试图用PHP处理传入数据的问题。
每个块都是对脚本的单独请求,并且没有任何数据在PHP的正常传入数据变量_POST
,_GET
,_FILES
等中注册。我终于被能够通过吸引$GLOBALS['HTTP_RAW_POST_DATA']
来获取数据,但即使将数据附加到同一文件上,图像也永远不会完整。它会显示部分内容,但有些内容总是错误的。
..那就是说..如果有更简单的方法将文件发布到脚本,同时仍然可以访问进度更新,我很乐意听到。
当我开始这个项目时,我曾假设Gears会为我提供一种方法,使用正常的文件进行多部分发布,并且只是在一段时间内向我发送一个事件信息。如果这在某种程度上是可能的(我很明显错过了),请告诉我。
要明确:我们 意识到HTML5支持进展机制,并且准备在可行时立即实施。 :)
供进一步参考:
我随帖子发送的标题(根据谷歌电影上传者示例)是:
Request.setRequestHeader( 'Content-Disposition', 'attachment; filename="' + self._fileName + '"' );
Request.setRequestHeader( 'Content-Type', 'application/octet-stream' );
Request.setRequestHeader( 'Content-Range', 'bytes ' + byteRange );
感谢任何可以提供帮助的人。
答案 0 :(得分:0)
从您的描述中看起来PHP可能无法正确写入文件。不确定原因。
然而,这是一个棘手的问题。例如,Facebook(你也知道使用PHP)决定编写一个NPAPI插件来实现这个功能。
http://www.facebook.com/note.php?note_id=178492968919
此外,您可以考虑编写浏览器扩展程序的便携性较低的选项。这在Firefox和Chrome中很容易实现,并为这些浏览器的用户提供了一个很好的临时选项。