1

我们提供将图像提交到用户图库的功能。

虽然我们采用的常规方法效果很好,但有些人会上传多个文件,这可能需要很长时间,并且在选择过程中很烦人(一次一个)。

我开始使用 Gears 为那些拥有它的人编写替代方法。主要目标是替换文件选择,并为上传提供进度指示器(这有助于减轻上传多个大文件时的挫败感)。

我已经完成了这一切。

我在这里引用了 Movie Uploader 代码 ( http://uploadmovietool.appspot.com/ ),它演示了使用 chunk 方法上传文件。我让它正确上传,服务器正在接受这些块,但是我在尝试使用 PHP 处理传入数据时遇到了问题。

每个块都是对脚本的单独请求,并且没有数据在 PHP 的正常传入数据 vars _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 );

感谢任何能提供帮助的人。

4

1 回答 1

0

从您的描述看来,PHP 可能没有正确写入文件。不知道为什么。

然而,这是一个棘手的问题。例如,Facebook(如您所知,它也使用 PHP)决定编写一个 NPAPI 插件来实现此功能。

http://www.facebook.com/note.php?note_id=178492968919

此外,您可以考虑编写浏览器扩展的便携性较差的选项。这在 Firefox 和 Chrome 中很容易做到,并且会为这些浏览器的用户提供一个很好的临时选择。

于 2010-02-01T00:14:31.690 回答