Skip to main content

11_multipart/
11_multipart.rs

1use flyer::{
2    request::Request,
3    response::Response,
4    server,
5    storage::local::LocalStorage,
6};
7
8pub async fn home(_req: Request, res: Response) -> Response {
9    return res.html(r#"
10        <form method="post" action="/upload" enctype="multipart/form-data">
11            <h1>Upload File/Files</h1>
12            <input type="file" name="file" multiple>
13            <button type="submit">Upload</button>
14        </form>
15    "#);
16}
17
18pub async fn upload(req: Request, res: Response) -> Response {
19    if req.files().len() > 0 {
20        for (_, file) in req.files() {
21            file
22                .save_as("", &file.name)
23                .await
24                .unwrap();
25        }
26        return res.html("<h1>File uploaded!</h1>");
27    }
28    return res.html("<h1>No file uploaded!</h1>");
29}
30
31fn main() {
32    let server = server("127.0.0.1", 9999)
33        .storage("default", LocalStorage::new("storage"));
34
35    server.router().group("/", |router| {
36        router.get("/", home);
37        router.post("upload", upload);
38    });
39
40    print!("\r\n\r\nRunning server: {}\r\n\r\n", server.address());
41
42    server.listen();
43}