mirror of https://github.com/fafhrd91/actix-web
fix: increase total limit in multipart example (#3567)
* fix: increase total limit in multipart example * update readme * Clarify where the limit comes from * Fix link --------- Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
This commit is contained in:
parent
971bbc1468
commit
37203c7fd8
|
@ -24,9 +24,10 @@ Due to additional requirements for `multipart/form-data` requests, the higher le
|
|||
## Examples
|
||||
|
||||
```rust
|
||||
use actix_web::{post, App, HttpServer, Responder};
|
||||
|
||||
use actix_multipart::form::{json::Json as MpJson, tempfile::TempFile, MultipartForm};
|
||||
use actix_multipart::form::{
|
||||
json::Json as MpJson, tempfile::TempFile, MultipartForm, MultipartFormConfig,
|
||||
};
|
||||
use actix_web::{middleware::Logger, post, App, HttpServer, Responder};
|
||||
use serde::Deserialize;
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
|
@ -36,25 +37,37 @@ struct Metadata {
|
|||
|
||||
#[derive(Debug, MultipartForm)]
|
||||
struct UploadForm {
|
||||
// Note: the form is also subject to the global limits configured using `MultipartFormConfig`.
|
||||
#[multipart(limit = "100MB")]
|
||||
file: TempFile,
|
||||
json: MpJson<Metadata>,
|
||||
}
|
||||
|
||||
#[post("/videos")]
|
||||
pub async fn post_video(MultipartForm(form): MultipartForm<UploadForm>) -> impl Responder {
|
||||
async fn post_video(MultipartForm(form): MultipartForm<UploadForm>) -> impl Responder {
|
||||
format!(
|
||||
"Uploaded file {}, with size: {}",
|
||||
form.json.name, form.file.size
|
||||
"Uploaded file {}, with size: {}\ntemporary file ({}) was deleted\n",
|
||||
form.json.name,
|
||||
form.file.size,
|
||||
form.file.file.path().display(),
|
||||
)
|
||||
}
|
||||
|
||||
#[actix_web::main]
|
||||
async fn main() -> std::io::Result<()> {
|
||||
HttpServer::new(move || App::new().service(post_video))
|
||||
.bind(("127.0.0.1", 8080))?
|
||||
.run()
|
||||
.await
|
||||
env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
|
||||
|
||||
HttpServer::new(move || {
|
||||
App::new()
|
||||
.service(post_video)
|
||||
.wrap(Logger::default())
|
||||
// Also increase the global total limit to 100MiB.
|
||||
.app_data(MultipartFormConfig::default().total_limit(100 * 1024 * 1024))
|
||||
})
|
||||
.workers(2)
|
||||
.bind(("127.0.0.1", 8080))?
|
||||
.run()
|
||||
.await
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
use actix_multipart::form::{json::Json as MpJson, tempfile::TempFile, MultipartForm};
|
||||
use actix_multipart::form::{
|
||||
json::Json as MpJson, tempfile::TempFile, MultipartForm, MultipartFormConfig,
|
||||
};
|
||||
use actix_web::{middleware::Logger, post, App, HttpServer, Responder};
|
||||
use serde::Deserialize;
|
||||
|
||||
|
@ -9,6 +11,7 @@ struct Metadata {
|
|||
|
||||
#[derive(Debug, MultipartForm)]
|
||||
struct UploadForm {
|
||||
// Note: the form is also subject to the global limits configured using `MultipartFormConfig`.
|
||||
#[multipart(limit = "100MB")]
|
||||
file: TempFile,
|
||||
json: MpJson<Metadata>,
|
||||
|
@ -28,9 +31,15 @@ async fn post_video(MultipartForm(form): MultipartForm<UploadForm>) -> impl Resp
|
|||
async fn main() -> std::io::Result<()> {
|
||||
env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
|
||||
|
||||
HttpServer::new(move || App::new().service(post_video).wrap(Logger::default()))
|
||||
.workers(2)
|
||||
.bind(("127.0.0.1", 8080))?
|
||||
.run()
|
||||
.await
|
||||
HttpServer::new(move || {
|
||||
App::new()
|
||||
.service(post_video)
|
||||
.wrap(Logger::default())
|
||||
// Also increase the global total limit to 100MiB.
|
||||
.app_data(MultipartFormConfig::default().total_limit(100 * 1024 * 1024))
|
||||
})
|
||||
.workers(2)
|
||||
.bind(("127.0.0.1", 8080))?
|
||||
.run()
|
||||
.await
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
//! ```no_run
|
||||
//! use actix_web::{post, App, HttpServer, Responder};
|
||||
//!
|
||||
//! use actix_multipart::form::{json::Json as MpJson, tempfile::TempFile, MultipartForm};
|
||||
//! use actix_multipart::form::{json::Json as MpJson, tempfile::TempFile, MultipartForm, MultipartFormConfig};
|
||||
//! use serde::Deserialize;
|
||||
//!
|
||||
//! #[derive(Debug, Deserialize)]
|
||||
|
@ -23,6 +23,7 @@
|
|||
//!
|
||||
//! #[derive(Debug, MultipartForm)]
|
||||
//! struct UploadForm {
|
||||
//! // Note: the form is also subject to the global limits configured using `MultipartFormConfig`.
|
||||
//! #[multipart(limit = "100MB")]
|
||||
//! file: TempFile,
|
||||
//! json: MpJson<Metadata>,
|
||||
|
@ -38,10 +39,15 @@
|
|||
//!
|
||||
//! #[actix_web::main]
|
||||
//! async fn main() -> std::io::Result<()> {
|
||||
//! HttpServer::new(move || App::new().service(post_video))
|
||||
//! .bind(("127.0.0.1", 8080))?
|
||||
//! .run()
|
||||
//! .await
|
||||
//! HttpServer::new(move || {
|
||||
//! App::new()
|
||||
//! .service(post_video)
|
||||
//! // Also increase the global total limit to 100MiB.
|
||||
//! .app_data(MultipartFormConfig::default().total_limit(100 * 1024 * 1024))
|
||||
//! })
|
||||
//! .bind(("127.0.0.1", 8080))?
|
||||
//! .run()
|
||||
//! .await
|
||||
//! }
|
||||
//! ```
|
||||
//!
|
||||
|
|
Loading…
Reference in New Issue