我刚刚发现,如果文件名包含特殊字符(如 ä / ö /...),则在 Mac 上 URLEncoding 不起作用
正如您在 Chrome 请求中看到的那样,它根本没有编码:
Request Payload
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="datacourse"
25672
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="datafilename"
äääöööüüüßßßß 2.png
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="datacontent"
10
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="datasemester"
28
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="dataprofessor"
äääöööüüüßßßß 2.png
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="datadescription"
Descriptionäääöööüüüßßßß 2.png
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="qquuid"
d0b29dd3-9b9a-4583-8d5e-9f692f73917d
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="qqtotalfilesize"
34403
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="qqfile"; filename="äääöööüüüßßßß 2.png"
Content-Type: image/png
------WebKitFormBoundaryUQC7QNkoqSSO2qui--
在 Windows PC 上,请求看起来像这样:
Request Payload
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="datacourse"
393
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="datafilename"
äüüääüßß.jpeg
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="datacontent"
10
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="datasemester"
28
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="dataprofessor"
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="datadescription"
Description
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="qquuid"
5befc15f-f98c-4f65-b7c6-b07061dd45fa
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="qqtotalfilesize"
261618
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="qqfile"; filename="äüüääüßß.jpeg"
Content-Type: image/jpeg
------WebKitFormBoundaryaehKL8ARADkQle4D--
在我使用的 PHP 端点中
$_REQUEST["datafilename"] = utf8_decode("datafilename"]);
解码formdate。使用 WINDOWS 一切正常。即使在 Mac 上也可以,只要文件名不包含特殊字符(如 ä / ö /...)。
如果有输出就像“a?a?a?o?o?o?u?u?u?ßß”
知道这里出了什么问题吗?那是我可以在我的 php 脚本中解决的问题吗?还是上传者必须做的事情?
只要 Mac 上的文件名是干净的,我就没有这个问题。因此,如果 OS = MAC 不可行,请查找 :(
谢谢
丹尼尔