使用进度条将文件上载到远程服务器

时间:2010-08-26 22:52:09

标签: jquery file-upload

我需要将文件上传到我的网站中,经过几个小时的思考后,我想出了一个非常好的方法。

带有上传表单的页面将由前端Web服务器提供。为了确保将文件上传到我的远程存储服务器,我将在标记中执行此操作:

<form action="http://storage.mysite.com/upload.php">
    <!-- whatever -->
</form>

所以这就是处理,但这让事情变得更加复杂。我还想要一个上传的进度条,我想我想出了一个方法来做到这一点。看看我非常棒的Photoshop技巧解释它:

http://imgur.com/opk39.jpg

为了获得上传文件的进度,我打算使用PHP函数filesize();来获取文件的文件大小。如果我有这个和总filezsize我可以使用Javascript并更新页面。但我不知道如何获取上传的文件大小:P

然后当上传完成后,我可以再次检查文件大小,如果它与总文件大小相同,我知道上传已完成。然后我可以运行Javascript函数来使用下载URL和其他所有内容更新页面。

无论如何,这就是我计划如何做到的。我不想使用任何花哨的闪存,因为我不想依赖我安装了闪存的用户。有没有做过类似事情或有过这方面经验的人提供了一些建议,如果我以正确的方式解决这个问题,请告诉我?

谢谢,非常感谢。

2 个答案:

答案 0 :(得分:0)

我的PHP技能有点生疏,但我会试着指出你正确的方向。由于XMLHttpRequest不支持文件上传,因此您需要使用以下两种方法之一来解决这个问题。

第一种方法是修补PHP RFC1867处理程序,可以从Pdoru找到here。这种方法的问题在于,如果你使用共享服务器的人会对你应用补丁有点敏感,它还需要你依赖一些旧的C代码来完成繁重的工作(不是我想调试的东西) !)。

第二种方法是使用隐藏的iframe和外部脚本来轮询进度(将整个文件和实际上传文件的总大小写入临时文件并进行比较)。

我认为选项2可能是最适合您的情况,前一段时间由Thomas Larsson发布了一个很棒的例子,您可以找到here

汤姆的帖子涉及两种方法,强烈建议阅读。有一个例子说明如何使用一个使用PHP页面的Perl脚本来实现它,我认为它将满足您的需求或至少解释您的选择。

据我所知,上述方法目前只有两种方法可以做到。

希望这能让你走上正确的道路。

祝你好运!

答案 1 :(得分:0)

有很多jQuery插件会为你做这件事,所以你不需要重新发明轮子。

这是one example

有很多,只是尝试搜索jQuery插件网站“file upload progress

Search Google