使用HTML5和PHP上传图像

use*_*820 -1 php

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

file_get_contents('php://input');
Run Code Online (Sandbox Code Playgroud)

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

Jan*_*tor 5

虽然你的帖子在你试图完成的内容中并不是太详细,但最重要的是,我将如何尝试提供解决问题的指导.

1.上传工作如何?

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

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

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

2. PHP如何处理上传?

如果你使用PHP,PHP有一些特殊的魔力multipart/form-data.如果您使用此内容,则内容php://input将不可用,您必须使用该$_FILES数组来处理上传.

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

有关上传的更多详细信息,请参阅PHP手册.

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

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

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

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

4.调试问题

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

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

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

如果您没有发送的文件,则可能已经在Web服务器或PHP中达到了上载的配置文件大小限制.至于罪魁祸首,你必须自己找出答案.

此外,请务必设置error_reportingE_ALL & E_NOTICE不要错过代码问题.

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

  • +1是一个非常周到的答案 (2认同)