Php 如何获取文件的当前进度';是通过ajax上传的吗?

Php 如何获取文件的当前进度';是通过ajax上传的吗?,php,ajax,file-upload,progress-bar,Php,Ajax,File Upload,Progress Bar,到目前为止,我已经知道如何使用Ajax和PHP异步上传文件,没有问题。但是我想得到已经上传的文件的百分比,因为它正在上传,经过几个小时的研究,我找不到一个好方法来做到这一点 我见过用Flash上传的,在Flash中获取百分比显然是相当普遍的,但如果可以的话,我想避免这种情况 有什么想法吗 是的,我也不喜欢那种“作弊”的方法,在我看来,最好的方法就是使用它,它的方法 使用ajax进行apc_获取,并使用指定上载的唯一键,将返回您需要的内容。。ie上传字节数/总字节数 然后简单地用javascrip

到目前为止,我已经知道如何使用Ajax和PHP异步上传文件,没有问题。但是我想得到已经上传的文件的百分比,因为它正在上传,经过几个小时的研究,我找不到一个好方法来做到这一点

我见过用Flash上传的,在Flash中获取百分比显然是相当普遍的,但如果可以的话,我想避免这种情况

有什么想法吗

是的,我也不喜欢那种“作弊”的方法,在我看来,最好的方法就是使用它,它的方法

使用ajax进行apc_获取,并使用指定上载的唯一键,将返回您需要的内容。。ie上传字节数/总字节数

然后简单地用javascript做一个进度条

我听说chrome和safari不允许您在上传后进行ajax调用,周围的工作包括使用iframe使用apc标识符进行调用。

是的,我也不喜欢那种“作弊”方法,在我看来,最好的方法是使用它的方法

使用ajax进行apc_获取,并使用指定上载的唯一键,将返回您需要的内容。。ie上传字节数/总字节数

然后简单地用javascript做一个进度条

我听说chrome和safari不允许您在上传后进行ajax调用,周围的工作包括使用iframe使用apc标识符进行调用。

核心问题是,通过
multipart/form data
MIME类型通过HTTP上传文件的规范,不提供任何提供文件上载进度的方法

文件上传实际上只是一个奇特的表单提交。CGI脚本、PHP和所有其他依赖前端web服务器首先接受请求的web技术可能在整个上载完成之前不会真正开始执行。这意味着他们通常甚至不知道上传什么时候开始,只知道上传什么时候完成

PHP的APC扩展的新版本包括,它执行某种程度的黑魔法,使它能够更早地了解上载情况。不过,它只是mod_php的一部分。开发人员似乎没有

另一个服务器端选项是。我不完全确定它使用什么样的黑魔法。表明它实际上与
multipart
MIME部分的处理挂钩。(这表明在客户端上载时,至少有一些SAPIs将表单数据流式传输到PHP。我知道,至少有一些FastCGI服务器在传递整个请求之前会缓冲整个请求,因此这可能对您不起作用。YMMV。)

这两个选项都适用于正常文件上载。Ajax——或者更确切地说,XMLHttpRequest——不支持文件上传操作。这个领域中的大多数解决方法都涉及创建iframe并在那里提交表单,这也意味着其他人的客户端工作。如果你要经历这种程度的跳跃,你最好使用一个现代的文件上传小部件

就我个人而言,我使用一个Javascript小部件,它可以与每个人最喜欢的Javascript库jQuery一起工作。还有一些人发誓。不管怎样,这两个小部件都为上传进度提供了高度的用户反馈。它们可能比APC或uploadprogress更容易实现,并且具有由其他人完全构建和测试的优势

Plupload支持多种上传引擎,包括HTML5、Gears、Flash、Silverlight、oldschool HTML4等。在HTML5、Flash和Silverlight之间,您几乎覆盖了100%的观众。它还允许您订阅事件,并让您自己的代码执行魔术。例如,如果需要服务器端文件上载进度信息,可以让客户端定期向其他脚本发送更新。如果你经常让客户上传巨大的文件,并且你想实时了解,这将非常有用

tl;dr:上传很难,让我们从客户端开始吧

核心问题是,通过
multipart/form data
MIME类型通过HTTP上传文件的规范没有提供任何提供文件上传进度的方法

文件上传实际上只是一个奇特的表单提交。CGI脚本、PHP和所有其他依赖前端web服务器首先接受请求的web技术可能在整个上载完成之前不会真正开始执行。这意味着他们通常甚至不知道上传什么时候开始,只知道上传什么时候完成

PHP的APC扩展的新版本包括,它执行某种程度的黑魔法,使它能够更早地了解上载情况。不过,它只是mod_php的一部分。开发人员似乎没有

另一个服务器端选项是。我不完全确定它使用什么样的黑魔法。表明它实际上与
multipart
MIME部分的处理挂钩。(这表明在客户端上载时,至少有一些SAPIs将表单数据流式传输到PHP。我知道,至少有一些FastCGI服务器在传递整个请求之前会缓冲整个请求,因此这可能对您不起作用。YMMV。)

这两个选项都适用于正常文件上载。Ajax——或者更确切地说,XMLHttpRequest——不支持文件上传操作。这个领域中的大多数解决方法都涉及创建iframe并在那里提交表单,这也意味着其他人的客户端工作。如果你要经历这种程度的跳跃,你最好使用一个现代的文件上传小部件

就我个人而言,我使用一个Javascript小部件,它可以与每个人最喜欢的Javascript库jQuery一起工作。还有一些人发誓。不管怎样,这两个小部件都为上传进度提供了高度的用户反馈。它们可能比APC或uploadprogress更容易实现,并且具有构建的优势