41 votes

Téléchargement d'une image dans ASP.NET MVC

J'ai un formulaire de téléchargement et je souhaite transmettre mes informations telles qu'une image et un autre champ mais je ne sais pas comment puis-je télécharger une image.

c'est mon code de contrôleur:

 [HttpPost]
        public ActionResult Create(tblPortfolio tblportfolio)
        {
            if (ModelState.IsValid)
            {
                db.tblPortfolios.AddObject(tblportfolio);
                db.SaveChanges();
                return RedirectToAction("Index");  
            }

            return View(tblportfolio);
        }
 

Et voici mon code de vue:

 @model MyApp.Models.tblPortfolio

<h2>Create</h2>

@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>tblPortfolio</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Title)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Title)
            @Html.ValidationMessageFor(model => model.Title)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.ImageFile)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.ImageFile, new { type = "file" })
            @Html.ValidationMessageFor(model => model.ImageFile)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Link)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Link)
            @Html.ValidationMessageFor(model => model.Link)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}
 

Maintenant, je ne sais pas comment puis-je télécharger l'image et l'enregistrer sur le serveur .. comment puis-je définir le nom de l'image par Guid.NewGuid(); ? Ou comment puis-je définir le chemin de l'image?

45voto

mattytommo Points 27587

Tout d'abord, vous devrez modifier votre vue pour inclure les éléments suivants:

 <input type="file" name="file" />
 

Ensuite, vous devrez modifier votre message ActionMethod pour prendre un HttpPostedFileBase , comme ceci:

 [HttpPost]
public ActionResult Create(tblPortfolio tblportfolio, HttpPostedFileBase file)
{
    //you can put your existing save code here
    if (file != null && file.ContentLength > 0) 
    {
        //do whatever you want with the file
    }
}
 

5voto

Thinking Sites Points 2513

C'est une fonctionnalité assez bien documentée d'ASP.NET. Faites une recherche sur Google et vous trouverez des réponses. Voici la meilleure réponse sur SO.

Téléchargement de fichiers ASP.NET MVC 3.0

1voto

rboarman Points 4271

Je vous suggère d'utiliser http://www.uploadify.com/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X