Skip to content
Advertisement

PHP multipart form data PUT request?

I’m writing a RESTful API. I’m having trouble with uploading images using the different verbs.

Consider:

I have an object which can be created/modified/deleted/viewed via a post/put/delete/get request to a URL. The request is multi part form when there is a file to upload, or application/xml when there’s just text to process.

To handle the image uploads which are associated with the object I am doing something like:

JavaScript

The major problem here is when trying to handle a put request, obviously $_POST doesn’t contain the put data (as far as I can tell!).

For reference this is how I’m building the requests:

JavaScript

Does anyone have any ideas how I can access the xml variable in my PUT request?

Advertisement

Answer

First of all, $_FILES is not populated when handling PUT requests. It is only populated by PHP when handling POST requests.

You need to parse it manually. That goes for “regular” fields as well:

JavaScript

At each iteration, the $data array will be populated with your parameters, and the $headers array will be populated with the headers for each part (e.g.: Content-Type, etc.), and $filename will contain the original filename, if supplied in the request and is applicable to the field.

Take note the above will only work for multipart content types. Make sure to check the request Content-Type header before using the above to parse the body.

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement