ASP.Net MVC 5 téléchargement d'images vers un dossier
J'ai une question très simple MVC5 application qui a une page de produit pour le client que je suis également en utilisant la base des opérations CRUD qui ont été prototypée dans MVC 5.
J'ai un Modèle appelé Gâteaux.cs parce que le client vend des gâteaux. Assez simple. Voici le code de ce modèle:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace TastyCakes.Models
{
public class Cakes
{
public int CakesID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string CakeImage
{
get { return Name.Replace(" ", string.Empty) + ".jpg"; }
}
}
}
Comme vous pouvez le voir, je suis en utilisant une propriété calculée pour créer un nom d'image pour chaque gâteau. J'ai seulement besoin de 1 image pour chaque gâteau. Maintenant quand je vais Modifier un gâteau sur mon CRUD pages. Je voudrais ajouter un simple téléchargement d'Image qui va télécharger une image (Pas besoin pour le redimensionnement des vignettes ou des) Mais je tiens à imposer la valeur calculée de la propriété nom. En d'autres termes: quel que soit l'utilisateur a nommé leur photo, mon code de téléchargement sera renommez-le en ce que les Gâteaux.Nom (sans les espaces) +"."jpg" et l'enregistrer dans "~Images/Gâteaux".
Je suis seulement besoin de le télécharger à être sur la page d'Édition, de sorte que le gâteau aura déjà été créés sur ce point. Toutes les informations nécessaires pour renommer le fichier doit être accessible et facile à utiliser à partir de la page d'Édition. Voici ma page de modification de code:
Modifier La Page:
@model TastyCakes.Models.Cakes
<div class="row">
<div class="large-12 columns">
<hgroup class="title">
<h1>Edit Cakes</h1>
</hgroup>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.CakesID)
<div class="medium-12 column">
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="medium-12 column">
@Html.LabelFor(model => model.Description)
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<div class="medium-12 column">
@Html.LabelFor(model => model.Price)
@Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)
</div>
<div class="medium-12 column">
<input type="submit" value="Save" class="tiny button" />
@Html.ActionLink("Back to List", "Index", null, new { @class = "tiny button" })
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
</div>
</div>
J'ai passé en revue quelques html5 & ASP.Net 4 solutions, mais c'en est trop. Ce que je veux, c'est très simple. Toutes les idées ou un coup de pied dans la bonne direction serait très apprécié. Je suis en utilisant ce code n'est pas seulement pour les clients du site web, mais d'inclure dans un site web fictif utilisé pour enseigner très basic concepts MVC.
- J'ai essayé d'intégrer le code de ce tutoriel mais avait du mal à la faire fonctionner, il est n d'instruction, juste du code, donc je l'ai probablement fait quelque chose de mal ou peut-être que le code doit être modifié pour mvc5 droit maintenant, je n'ai pas mise en œuvre. dotnet-tricks.com/Tutorial/mvc/...
- Vous cherchez une solution, tutoriel, etc..
- la caisse de ma réponse, stackoverflow.com/a/40990080/4251431
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin de:
input
de typefile
à votre formulaire,enctype = "multipart/form-data"
Puis ajouter un
HttpPostedFileBase
pour votre modèle avec le même nom que le nom de lainput
. Puis leHttpPostedFileModelBinder
va remplir le modèle de la propriété à partir du fichier téléchargé avant que l'action est invoquée. Remarque, je pense que vous devriez probablement ajouter dans le modèle id quelque part, peut-être comme un élément du chemin, à la garantie de l'unicité dans le chemin de l'image, de sorte que les images ne sont pas accidentellement écrasé.Il y a raisonnablement une discussion complète de ce à http://www.prideparrot.com/blog/archive/2012/8/uploading_and_returning_files
Le code qui est fourni ici finalement allé dans la construction de cette petite démo qui vous permet de télécharger des images vers le système de fichiers et les utiliser de manière dynamique, sans stocker toutes les valeurs à la base de données; cependant, vous aurez la chaîne pour les images de l'emplacement du fichier dans le cadre de votre Modèle de classe qui utilise une convention de nommage du fichier téléchargé à l'écran.
Je voudrais télécharger ce à github et voir si je peux avoir un peu d'autres personnes pour m'aider à me sortir d'une meilleure solution, qui utilise cette idée. La pensée de le faire fonctionner avec MongoDB trop.
ASP.NET MVC 5 Téléchargement d'Image & Supprimer w/Propriété Calculée