Web forms are a common way how to interact with a client using PHP. We wanted to move the form handling to a client side. So, web forms generated from PHP scripts are now handled on a client side without knowing about additional configuration. You just specify a request method and handling script. Superglobals `$_GET` and `$_POST` work as you expect.
> The example of using web forms can be found in [https://github.com/peachpiecompiler/peachpie-blazor/tree/master/src/Tests/Examples/OneScript](https://github.com/peachpiecompiler/peachpie-blazor/tree/master/src/Tests/Examples/OneScript)
When you generate a web form from a PHP script, `PhpScriptProvider` turns the form handling to a client side, where the provider finds the handling script of the form.
More information about the API can be found in [[https://docs.peachpie.io/scenarios/blazor/api-reference/]([https://docs.peachpie.io/scenarios/blazor/api-reference/).
## Files
Loading and downloading files are possible as well. However, we need specialized functions to manage it.
> The example of using web forms can be found in [https://github.com/peachpiecompiler/peachpie-blazor/tree/master/src/Tests/Examples/OneScript](https://github.com/peachpiecompiler/peachpie-blazor/tree/master/src/Tests/Examples/OneScript)
### Uploading file
When a client uploads a file to the webform and sends it, we can get information about sent files in superglobal `$_FILES`. When you want to read a file content, you have to use `GetBrowserFileContent($fileId)`, which returns Base64 encoded content of the file by the given id. This id has every object returned from `$_FILES`.
### Creating file
Because of the browser environment, you have to use the specialized function for creating a file. `CreateFile(string $data, $contentType, $name)` will create a browser representation of the file with given data, type, and name.
### Downloading file
Then you can download an already existing file by `DownloadFile($fileId)`, which finds the file in the memory and start to download it to a client PC.
You can see an example of creating a CSV file and downloading it to a client below.