mirror of
https://github.com/cesanta/mongoose.git
synced 2024-12-24 00:07:49 +08:00
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;
|
||
|
}
|
||
|
}
|
||
|
```
|