默认情况下,您无法访问上传的文件,直到它完全传输到服务器。
解决此问题并在文件上传正在进行时能够访问“字节流”的最佳方法是什么?
我认为您在 PHP 中最接近这一点的是查看各种进度条解决方案,这些解决方案在将文件上传到 PHP 脚本时为您提供进度条。我不知道其中任何一个的详细信息(我一直等到SWFUpload可以在 Flash 中执行此操作)但如果您可以获得上传进度,那么您很可能也可以自己获取数据块。(更新:基于 APC 的解决方案不能。它似乎只给出了上传进度。)
没有一种方法在纯原生 PHP 中运行,它们都需要 Perl 或 APC 或其他服务器端的东西才能工作。
最终更新:粗略浏览Raditha Mega Upload 进度条的Perl 代码,我认为这是您最好的选择,因为它似乎正在与正在上传的实际文件进行交互。不过,没有保证。
您将需要某种缓冲区来添加新数据并在其中读取块。然后检查是否有新数据并再次读取。