POST 文件上传 - multipart/form-data + PHP 中的 UTF 错误?

发布于 2024-12-29 06:24:50 字数 322 浏览 1 评论 0原文

当我尝试使用带有 header Content-Type: multipart/form-data; 的 HTTP post 上传文件时boundary=-----NPRequestBoundary----- 一切都按预期工作,但尝试使用 Content-Type: multipart/form-data;边界=-----NPRequestBoundary-----; charset=UTF-8 导致 $_FILES 数组完全空白。

是 PHP 还是 Web 服务器的问题?据我所知,这种形式的 Content-Type 是有效的。

When I try to upload files using HTTP post with header Content-Type: multipart/form-data; boundary=-----NPRequestBoundary----- everything works as expected but trying to use Content-Type: multipart/form-data; boundary=-----NPRequestBoundary-----; charset=UTF-8 cause completely blank $_FILES array.

Is it a problem with PHP or web server? As I know this form of Content-Type is valid.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

吃素的狼 2025-01-05 06:24:50

因为 Content-Typemultipart/form-data,这意味着它是由多个部分组成的,每个部分都可以有自己的 Content-Type代码>. charset 参数仅与 text/plain 内容类型一起使用。因此,对于 multipart/form-data 内容类型来说,这是没有意义的。

Because the Content-Type is multipart/form-data, this means it is built up from parts, and every part can have its own Content-Type. The charset parameter is only used with text/plain content-type. So it is meanless with a multipart/form-data content-type.

梦里兽 2025-01-05 06:24:50

Bug 已在 SVN rev 中修复。 #316373(5.3.9 版本涵盖了它)。

Bug was fixed in SVN rev. #316373 (5.3.9 release covers it).

素食主义者 2025-01-05 06:24:50

我找到了解决这个问题的肮脏方法。对我来说,它是 ofc 临时 bcs,它在 litespeed 下不起作用(我使用 apache 的反向代理来避免这个问题)。
<位置“/upload.php”>
RequestHeader设置Content-Type“multipart/form-data;boundary=-----NPRequestBoundary-----”

它将强制网络服务器替换内容类型标头。现在我确定 - 这是一个 PHP 错误(有人假设字符集将出现在 boundary= 之前)

I've found dirty workaround for this problem. For me it's ofc temporary bcs it doesn't work under litespeed (I used reverse proxy to apache to avoid this problem).
<Location "/upload.php">
RequestHeader set Content-Type "multipart/form-data; boundary=-----NPRequestBoundary-----"
</Location>

It will force webserver to replace content-type header. For now I'm sure - this is a PHP bug (someone assumed that charset will occur before boundary=)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文