使用HTML5和PHP上传图像

时间:2013-06-26 10:16:15

标签: php

如果我读取文件上传脚本,我几乎到处都看到以下代码行来读取文件内容

file_get_contents('php://input');

但遗憾的是无法真正理解它。有人可以帮助它实际意味着什么吗?

2 个答案:

答案 0 :(得分:5)

虽然您的帖子在您尝试完成的内容中并不是太详细,但最重要的是,我会尝试提供一些指导来解决您的问题。

<强> 1。上传工作如何?

您必须首先了解上传如何使用PHP。您上传的文件将作为HTTP请求的正文部分发送。

然而,可以编码该身体部位。一旦这样的编码可能是multipart/form-data,其中身体被分成单独的部分。然而,PHP会对此进行一些特殊处理,请参阅本答案的后面部分。

另一种方法是将文件本身完全取消编码,作为PUT请求的正文部分,例如XMLHttpRequest发送。这将使您的代码实际工作,但是,我们稍后再讨论。

<强> 2。 PHP如何处理上传?

如果您使用multipart/form-data,PHP会有一些特殊的魔力。如果您使用此内容,php://input的内容将无法使用,您必须使用$_FILES数组来处理上传。

另一方面,如果您想自己处理上传或者您使用PUT方法并且上传不需要特殊处理,您只需阅读php://input的所有内容并以您喜欢的方式使用它们

有关上传的详细信息,请参阅PHP manual

第3。如何从客户端提交文件?

有几种方法。最基本的方法是简单地创建一个表单,将该文件作为HTTP POST上传提交,然后按上述方法处理。

如果您想要进度条,可以像YUI uploader一样使用某些Flash。这个小文件仍会发送HTTP POST,但您可以访问通过JavaScript上传的内容。

最后,如果您的浏览器支持HTML5文件API,您可以获取本地文件的内容,并根据您的需要通过HTTP POSTHTTP PUT上传。有关详细信息,请参阅this tutorial

<强> 4。调试问题

东西往往会破坏,所以你需要能够调试它。您选择的第一个武器是来自浏览器的某种网络转储。如果您使用Chrome,则会内置工具,对于其他浏览器,您可能需要下载一些扩展程序。

您需要查看请求并查看数据是否存在且编码是否正确。作为Web开发人员,您应该对HTTP有深入的了解,所以如果您不是read up on it没有理由不知道HTTP。

如果您确定您的数据到达服务器端,您应该学会调试PHP。首先,看看你的superglobals。你发送的一切都在吗?或者缺少什么?

如果您没有发送的文件,则可能已经在网络服务器或PHP中达到了上传的配置文件大小限制。至于罪魁祸首,你必须亲自找到。

此外,请务必将error_reporting设置为E_ALL & E_NOTICE,以免错过代码问题。

最后,如果没有其他帮助,您将需要学习使用xdebug进行调试。同样,没有任何借口让Web开发人员无法调试您自己的代码。无。

答案 1 :(得分:1)

请参阅http://www.php.net/manual/en/wrappers.php.php

php://input是一个“特殊文件”,其中包含发送到PHP脚本的输入。在Web服务器上,表示HTTP 请求正文的内容。 file_get_contents只是从常规文件中读取整个内容。

简而言之:该行获取HTTP请求正文的内容。

但是:使用php://input

multipart/form-datanot populated