Вопрос

I'm trying to retrieve the data from a PUT request.

Currently I have it working with the below code:

parse_str(file_get_contents("php://input"), $parsedArray);

But this seems to only be supported with x-www-url-encoded and not the standard form-data, is there a work around that I've missed?

If it's any addition I have the following headers set on all requests to my API:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: *");
header("Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, DELETE");
header("Access-Control-Allow-Headers: Authorization");
header("Content-Type: application/json");

If more info is needed i can provide it, not too sure what else could be effecting this?

Cheers in advance, Jamie

Нет правильного решения

Другие советы

I found this, it provides good extra background (got curious myself): PUT vs POST

This is not specific to PUT - POST suffers the same problem.

When PHP parses a multipart/form-data request, php://input is no longer available.

This has caused many problems for me in the past!

Unfortunately the only workaround is to have the file's contents be submitted as part of the form-data, possibly base64-encoded (so it doesn't have to urlencode all the binary data). It's a hassle, but sadly that's the only way to handle this particular situation...

There is some issue about it on PHP.

https://bugs.php.net/bug.php?id=55815

On the other hand, as they say over there, PUT is not the proper way to upload a file. It is a discussion about to solve the problem in Symfony Framework or not.

https://github.com/symfony/symfony/pull/10381#issuecomment-36726684

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top