题:
如何实时读取和回显正在服务器上写入的上传文件的文件大小,而又不会在服务器和客户端上造成阻塞?
内容:
文件上传进度被从写入到服务器POST请求所作fetch(),其中body被设置为Blob,File,TypedArray,或ArrayBuffer对象。
当前实现将File对象设置为body传递给的第二个参数的对象fetch()。
需求:
读取echo并向客户端发送写入服务器上文件系统的文件的文件大小text/event-stream。当所有字节(作为变量提供给脚本,作为GET请求中的查询字符串参数)已写入时,停止。当前,文件的读取是在单独的脚本环境中进行的,在该脚本环境中,GET应在POST将文件写入服务器的脚本之后调用应读取文件的脚本。
尚未达到将文件写入服务器或读取文件以获取当前文件大小的潜在问题的错误处理,尽管一旦echo文件大小部分完成,这将是下一步。
目前正尝试使用来满足要求php。虽然也有兴趣在c,bash,nodejs,python,或其他可以用来执行相同任务的语言或方法。
客户端javascript部分不是问题。根本不熟悉php,它是万维网上最常用的服务器端语言之一,用于在不包含不需要的部分的情况下实现该模式。
动机:
获取进度指示器?
有关:
使用ReadableStream获取
问题:
得到
PHP Notice: Undefined index: HTTP_LAST_EVENT_ID in stream.php on line 7
在terminal。
另外,如果替代
while(file_exists($_GET["filename"])
&& filesize($_GET["filename"]) < intval($_GET["filesize"]))
对于
while(true)
在产生错误EventSource。
如果没有sleep()电话,正确的文件大小被派往message事件的3.3MB文件3321824,被印在console 61921,26214和38093次,分别在上传同一文件三次。预期结果是文件在写入时的文件大小
stream_copy_to_stream($input, $file);
而不是上传文件对象的文件大小。是fopen()或stream_copy_to_stream()堵不如到其他不同php的过程stream.php?
潇湘沐
GCT1015