I am trying to write a simple PHP serverless function (so simple I’m just writing it in the web UI).
I am POSTing form-data containing some text values and a file. The function will just take the file and upload it to a DO Space.
The $_FILES variable is empty and I can’t find where the uploaded file is, or if it even exists. I can’t find any reference to it in the function args parameter either.
Do these function support file uploads?
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
In PHP, when used with web servers, the
$_FILES
variable is filled in with info about the file specified in the web form and saved on the disk by the web server. With our FaaS product Functions, things work differently. Instead of the variables$_FILES
,$_GET
, and$_POST
, we make as much data about the request as we can available to you by including it in the “event” parameter of your function.Unrelated to your use case, but related to the function signature, is the fact that we also make as much data about the execution context as we can available to you by including it in the “context” parameter of your function.
So in the end, a full featured PHP function signature is as follows:
This example returns the complete event parameter and context parameter in the response body. This helps you see all the data that is available to you while you process the request.
For your use case, try using an HTTP client, such as the web browser you described in your question, or
curl
, to send a request where you’d normally see file data in$_FILES
if it were PHP used with a web server. You’ll see how our system processes this and makes it available in the event parameter.