编程语言
首页 > 编程语言> > 如何处理PHP请求中的长标头声明?

如何处理PHP请求中的长标头声明?

作者:互联网

我正在尝试使用Picasa Web Uploader API将照片库上传到我的网站.我已经能够实现该按钮,在Picasa中对其进行设置并进行身份验证,但是在处理我的网站从Picasa接收到的POST时,$_ FILES数组始终为空.

我查看了Picasa使用Fiddler发布的请求,并能够确定每个文件组成部分开头的Content-Disposition标头为too long-Picasa发送的标头包含文件的完整路径在我的服务器上,因此最终超过128个字符:

Content-Disposition: form-data; name="http://localhost:50216/1f6b3b29edc6f9d8898ede07c1b10e27/image/415603f72f75af1a.jpg?size=640"; filename="DSC_0055.JPG"

看来PHP最多只能处理128个字符的标头,并且如果标头太长,则整个多部分节都将被丢弃. (当我在Fiddler中减小此标头的长度并重新发布请求时,我的网站会收到$_FILE并成功处理它).

我该如何解决?

>我可以在某处设置配置设置以允许PHP处理长标头并接收$_FILE数组中的数据吗?
>或者,除了$_FILE数组之外,我是否可以其他方式访问缺少的多部分内容?

解决方法:

你完蛋了.

但是,无论如何,您可以使用几种解决方法来实现它.您需要自己解析接收到的表单数据.另一个问题是PHP无法让您看到原始的mutlipart / form-data,因此您需要:

> rewrite the multipart/form-data content type via .htaccess rules
> set always_populate_post_data=On in php.ini
>从file_get_contents(“ php:// stdin”)中读取
>分解/ form-data,这并不困难,PEAR Mail_mimeDecode可能会有所帮助

另一种方法是修补PHP解释器. :/

标签:http-headers,picasa,multipartform-data,php
来源: https://codeday.me/bug/20191105/1996335.html