mirror of
https://github.com/cesanta/mongoose.git
synced 2024-12-24 00:07:49 +08:00
12437fd7fe
PUBLISHED_FROM=e9a4e5c7b4a1d03b93a2a79e29de19e60e919929
37 lines
973 B
Markdown
37 lines
973 B
Markdown
---
|
|
title: Handling file uploads
|
|
---
|
|
|
|
In order to handle file uploads, use the following HTML snippet:
|
|
|
|
```HTML
|
|
<form method="POST" action="/upload" enctype="multipart/form-data">
|
|
<input type="file" name="file">
|
|
<input type="submit" value="Upload">
|
|
</form>
|
|
```
|
|
|
|
Uploaded files will be sent to the `/upload` endpoint via the `POST` request.
|
|
HTTP body will contain multipart-encoded buffer with the file contents.
|
|
|
|
To save the uploaded file, use this code snippet:
|
|
|
|
```c
|
|
struct mg_str cb(struct mg_connection *c, struct mg_str file_name) {
|
|
// Return the same filename. Do not actually do this except in test!
|
|
// fname is user-controlled and needs to be sanitized.
|
|
return file_name;
|
|
}
|
|
|
|
void ev_handler(struct mg_connection *c, int ev, void *ev_data) {
|
|
switch (ev) {
|
|
...
|
|
case MG_EV_HTTP_PART_BEGIN:
|
|
case MG_EV_HTTP_PART_DATA:
|
|
case MG_EV_HTTP_PART_END:
|
|
mg_file_upload_handler(c, ev, ev_data, cb);
|
|
break;
|
|
}
|
|
}
|
|
```
|