Speichern möchten Sie ein Bild in einen Ordner und speichern Sie die url in Datenbank
Ich sehr Neuling in asp.net mvc . hier hatte ich ein problem in der controller-Bild hochladen, jeder kann helfen???? Dieses Beispiel controller bekomme ich aus dem internet , was soll ich ändern und code viewnya wie, hier habe ich das Bild speichern möchten, die durch die " AvatarUrl "
Modell > EmployeeServices
public class EmployeeModel{
[ScaffoldColumn(false)]
public int EmployeeID { get; set; }
[Required(ErrorMessage = "Please Enter Position ID")]
public int PositionID { get; set; }
[Required(ErrorMessage = "Please Enter NO PEK")]
public string NoPEK { get; set; }
[Required(ErrorMessage = "Please Enter NO KTP")]
public string NoKTP { get; set; }
[Required(ErrorMessage = "Please Enter TaxID")]
public string TaxID { get; set; }
[Required(ErrorMessage = "Please Enter FirstName")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Please Enter LastName")]
public string LastName { get; set; }
[Required(ErrorMessage = "Please Enter OrganizationID")]
public int OrganizationID { get; set; }
[Required(ErrorMessage = "Please Enter BirthPlace")]
public string BirthPlace { get; set; }
[Required(ErrorMessage = "Please Enter BirthDay")]
public System.DateTime BirthDay { get; set; }
[Required(ErrorMessage = "Please Enter Gender")]
public string Gender { get; set; }
[Required(ErrorMessage = "Please Enter Religion")]
public string Religion { get; set; }
[Required(ErrorMessage = "Please Enter TaxAddress")]
public string TaxAddress { get; set; }
[Required(ErrorMessage = "Please Enter Home Address")]
public string HomeAddress { get; set; }
[Required(ErrorMessage = "Please Enter Current Address")]
public string CurrentAddress { get; set; }
[Required(ErrorMessage = "Please Enter Phone Number")]
public string PhoneNumber { get; set; }
[Required(ErrorMessage = "Please Enter Email")]
public string Email { get; set; }
[Required(ErrorMessage = "Please Enter IsAuditor")]
public string IsAuditor { get; set; }
[Required(ErrorMessage = "Please Enter TaxProvince ")]
public int TaxProvinceID { get; set; }
[Required(ErrorMessage = "Please Enter Tax City ")]
public int TaxCityID { get; set; }
[Required(ErrorMessage = "Please Enter Home Province ")]
public int HomeProvinceID { get; set; }
[Required(ErrorMessage = "Please Enter Home City")]
public int HomeCityID { get; set; }
[Required(ErrorMessage = "Please Enter Current Province")]
public int CurrentProvinceID { get; set; }
[Required(ErrorMessage = "Please Enter Current City")]
public int CurrentCityID { get; set; }
[Required(ErrorMessage = "Please Enter Avatar Url")]
public string AvatarUrl { get; set; }
}
- Controller - > EmployeesController
[HttpPost]
public ActionResult Create(EventModel eventmodel, HttpPostedFileBase file)
{
if (ModelState.IsValid)
{
var filename = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Uploads/Photo/"), filename);
file.SaveAs(path);
tyre.Url = filename;
_db.EventModels.AddObject(eventmodel);
_db.SaveChanges();
return RedirectToAction("Index");
}
return View(eventmodel);
}
Sie tun kann :
eventmodel.AvatarUrl = "~/Uploads/Photo/"+filename;
vor der Zeile _db.EventModels.AddObject(eventmodel);
InformationsquelleAutor Burhanumubim | 2015-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hochladen einer Datei, Speicherung in der lokalen Datei-system und Speicherung in einer Datenbank ist ein gemeinsames Muster. Diese sind meine Empfehlungen.
1. Verwenden Sie nicht die hochgeladen, mit dem Namen, als Ihre Dateinamen.
Dies ist üblich:
Tun Sie es nicht. Es gibt ein paar Gründe:
a) Dateinamen in Konflikt geraten kann.
b) Remote-Dateinamen möglicherweise nicht kompatibel mit Ihrem lokalen Datei-system.
c) kann Jemand versuchen, eine schädliche Dateinamen, und tun dies möglicherweise bricht Ihr server.
Stattdessen erzeugen Sie Ihre eigenen mit dem Namen (vielleicht unter Verwendung einer GUID
GUID.NewGuid().ToString()
) und bewahren Sie den ursprünglichen Dateinamen in die Datenbank.2. Nicht speichern Sie alle Dateien in einem einzigen Ordner
Irgendwann Ihre Ordner enthält zu viele Dateien für das OS schnell Bearbeiten.
Partition die Dateien, indem Sie etwas nützliches, wie die Benutzer-ID. Dies hilft auch zu trennen, die Dateien zwischen den Nutzern.
3. Speichern Sie nicht den vollständigen Pfad zu der Datei in der Datenbank
Irgendwann, können Sie die Dateien verschieben (vielleicht auf einem anderen Laufwerk) und alle Ihre gespeicherten Speicherorte gebrochen werden.
4. Nicht speichern Sie die Bild-URL in der Datenbank
Gleiche wie #3. Wenn Sie Ihre web-app geändert und Sie möchten, ändern Sie die Bild-URLs, dann haben Sie falsche URLs in der Datenbank gespeichert. Sie haben, um zu Scannen und aktualisieren Sie alle Ihre Datenbank-Einträge.
5. Nicht speichern redundante path-Informationen in die Datenbank
Während es mag verlockend sein, "Uploads/Foto/" in der URL gespeichert in der Datenbank, es hat viele Probleme zu:
a) Es redundante Daten. Für jede Datei, die Sie verwenden zusätzliche, unnötige, Daten-Raum.
b) Wenn die app verpasst und die URL soll sich ändern, Ihre gespeicherten URLs werden jetzt gebrochen.
Statt, prepend "Uploads/Foto/" an die URL nach dem Lesen Sie den Wert aus der Datenbank.
Update:
Ist hier einige Beispiel-code:
Allerdings würde ich vorsichtig sein, über die Verwendung Ihrer Daten-Modell wie das MVC-action-Modell.
InformationsquelleAutor Matt Houser
Sollten Sie Ihre AvatarUrl:
In Ihrer Ansicht können Sie ein Formular erstellen, die der folgenden ähnelt. Fügen Sie die Felder, die Sie akzeptieren Eingangs und verwenden Sie eine Datei-Eingabe für Ihren avatar. Wenn das Formular gebucht wird zurück an den controller, MVC versucht zu binden, Eingänge zu den Parametern.
Ihre controller-Methode aktualisiert werden sollten:
Wenn Sie noch fest sind lassen Sie mich wissen, und ich kann mehr ins detail gehen.
Es ist auch eine ausgezeichnete/detaillierter schreiben im Zusammenhang zu dem, was Sie versuchen zu tun, hier http://cpratt.co/file-uploads-in-asp-net-mvc-with-view-models/
InformationsquelleAutor timothyclifford