Uploader un fichier
formulaire/image.rs
formulaire
use runique::prelude::*;
pub struct ImageForm {
pub form: Forms,
}
impl RuniqueForm for ImageForm {
impl_form_access!();
fn register_fields(form: &mut Forms) {
form.field(
&FileField::image("image")
.label("Choisissez une image")
.upload_to("media/uploads/images")
.required()
.max_size_mb(5)
.max_files(3)
.max_dimensions(1920, 1080)
.allowed_extensions(vec!["png", "jpg", "jpeg", "gif"]),
);
}
}
formulaire/image.rs
formulaire
use runique::prelude::*;
pub struct ImageForm {
pub form: Forms,
}
impl RuniqueForm for ImageForm {
impl_form_access!();
fn register_fields(form: &mut Forms) {
form.field(
&FileField::image("image")
.label("Choisissez une image")
.upload_to("media/uploads/images")
.required()
.max_size_mb(5)
.max_files(3)
.max_dimensions(1920, 1080)
.allowed_extensions(vec!["png", "jpg", "jpeg", "gif"]),
);
}
}
Types de FileField
// Images : jpg jpeg png gif webp avif
FileField::image("avatar")
// Documents : pdf doc docx txt odt
FileField::document("cv")
// Tout type de fichier
FileField::any("fichier")
// Extensions personnalisees
FileField::any("data")
.allowed_extensions(vec!["csv", "json"])
Types de FileField
// Images : jpg jpeg png gif webp avif
FileField::image("avatar")
// Documents : pdf doc docx txt odt
FileField::document("cv")
// Tout type de fichier
FileField::any("fichier")
// Extensions personnalisees
FileField::any("data")
.allowed_extensions(vec!["csv", "json"])
Chemin d'upload
// Chemin fixe dans le code
FileField::image("photo")
.upload_to("media/uploads/photos")
// Depuis la variable MEDIA_ROOT dans .env
FileField::image("photo")
.upload_to_env()
// Sans upload_to → MEDIA_ROOT directement
Chemin d'upload
// Chemin fixe dans le code
FileField::image("photo")
.upload_to("media/uploads/photos")
// Depuis la variable MEDIA_ROOT dans .env
FileField::image("photo")
.upload_to_env()
// Sans upload_to → MEDIA_ROOT directement
handler
handler
pub async fn upload_image_submit(
mut request: Request,
Prisme(mut form): Prisme<ImageForm>,
) -> AppResult<Response> {
if request.is_post() {
if form.is_valid().await {
success!(request.notices => "Fichier uploade avec succes !");
} else {
error!(request.notices => "Erreur de validation");
}
return Ok(Redirect::to("/upload-image").into_response());
}
context_update!(request => { "image_form" => &form });
request.render("forms/upload_image.html")
}
handler
handler
pub async fn upload_image_submit(
mut request: Request,
Prisme(mut form): Prisme<ImageForm>,
) -> AppResult<Response> {
if request.is_post() {
if form.is_valid().await {
success!(request.notices => "Fichier uploade avec succes !");
} else {
error!(request.notices => "Erreur de validation");
}
return Ok(Redirect::to("/upload-image").into_response());
}
context_update!(request => { "image_form" => &form });
request.render("forms/upload_image.html")
}