2012-01-14 108 views
2

我有一个问题。我试图通过jquery & post method + PHP将图片上传到我的服务器。 片的下面的代码:如何显示上传的当前进度(jquery + post + php)?

$.post("http://www.xyz.com/upload.php", { image: ImageObject}, function(data) { 
    //code      
}); 

我想通过文字来显示上传的最新进展(自动更新),这样的事情:

<div>Current progress: <div id="progress">[dynamic number]</div> 

任何想法,我该怎么办呢?我不想使用flash - 只有PHP/jQuery。

+0

的唯一方法是使设置为每隔x毫秒检查使用服务器端代码的进展情况向服务器发出请求。顺便说一句,这是否.post甚至工作?我不认为你可以用jQuery的ajax方法发送图像。 – 2012-01-14 23:27:28

+0

是的,发布工作正常(base64)。问题是,我不知道如何获得当前进度的上传:( – Jakub 2012-01-14 23:30:47

回答

1

可惜你不能独自做到这一点本身通过jQuery的,因为客户端的JavaScript有网页以外没有获得的客户信息,但你有几个选项:

  1. 使用闪光灯或者可以访问客户端的Java插件,例如this one
  2. 使用轮询您的服务器的系统来请求当前文件的进度。我对PHP并不是很熟悉,但是在.NET中,负责接收上传文件的类将告诉我迄今为止上传了多少字节。我会设置一个客户端计时器,以给定的时间间隔(例如1秒)通过ajax请求这些信息,然后使用返回的信息来操纵进度条。
  3. 使用HTML5网页套接字上传进度从服务器到 客户端。虽然它是一个非常整洁的选项,但它是我最不喜欢的,因为它很难实现,并且不会享受到很宽的浏览器支持。

祝你好运!