Logo

Uploader un fichier

Extensions : png, jpg, jpeg, gif · Max 5 MB · Max 3 fichier(s) · Dimensions max : 1920x1080px
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")
}