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.
Asked
Active
Viewed 2,365 times
3

kiler129
- 1,063
- 2
- 11
- 21
3 Answers
1
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.

xdazz
- 158,678
- 38
- 247
- 274
-
You're wrong I think - what about filenames encoding? Adding charset directly to `Content-Type` will take care about it. The worst thing in all this is that I can not modify the client application. – kiler129 Jan 27 '12 at 03:44
0
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=
)

kiler129
- 1,063
- 2
- 11
- 21