2017-02-04 2 views
0

Ich arbeite an einer ASP.NET MVC-Site, die es einem Benutzer ermöglicht, mehrere Bilder in eine Galerie hochzuladen. Nachdem ein Benutzer seine Bilder hochgeladen hat und bevor sie in der Datenbank gespeichert werden, hat der Benutzer die Möglichkeit, die Bilder mithilfe eines jQuery Drag & Drop neu anzuordnen. Der Benutzer kann dann seine Uploads senden. Der Benutzer hat später auch die Möglichkeit, seine Galerie zu bearbeiten und die Reihenfolge seiner Bilder erneut zu ändern. Ich werde die Bilder nicht in der Datenbank speichern, nur die Dateinamen. Ich bin mir nicht sicher, wie ich das am besten handhaben soll. Ich denke, der POST-Controller wird einen List<HttpPostedFileBase> Parameter nehmen und dann zu einem byte [] array konvertieren, um die Bildreihenfolge aufrechtzuerhalten. Speichern Sie dann die Bildnamen als kommagetrennte Zeichenfolge in der Datenbank? Was wäre der effizienteste Weg, damit umzugehen?Umgang mit mehreren Bilduploads

+0

das Komma getrennt Neueinstufung, warum Sie nicht speichern Sie es als json so die string wird so sein: {"img1": "ImageName", "img2": "ImageName2" .. etc} das wird es einfacher machen, auf ein bestimmtes Bild zuzugreifen und damit umzugehen (löschen, bearbeiten oder hinzufügen) –

+0

Eigentlich, was ich suche, ist die beste Methode, um die Bilddateien zu verarbeiten und in der Datenbank zu speichern, bas Die Tatsache, dass sich die Bildordnung im Laufe der Zeit ändern kann, – PixelPaul

+0

@Valkyriee, die Bilder selbst werden nicht in der DB gespeichert, nur die Dateinamen. – PixelPaul

Antwort

1

Gut also, wenn wir ziehen setzen und eine Seite fallen, sehen dies als Ihre Ansicht:

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    <input type="file" name="files" value="" multiple="multiple"/> 
    <input type="submit" value="Upload"/> 
} 

In Ihrem Controller:

[HttpPost] 
public ActionResult Index(HttpPostedFileBase[] files) 
{ 
    try 
    { 
     foreach (HttpPostedFileBase file in files) 
     { 
      string name = System.IO.Path.GetFileName(file.FileName); 
      file.SaveAs(Server.MapPath("~/Images/" + name)); 

      string filename = "Images/" + name; 

      //Save the the filename to your database 
     } 
    } 
    catch 
    { 
     throw ex; 
    } 
    return View(); 
} 
+0

Vielen Dank für das Posten. Ich verstehe im Grunde genommen diesen Teil davon. Was ich versuchte herauszufinden, war die beste Methode, um die Reihenfolge der Bilder zu verfolgen. Zum Beispiel lädt ein Benutzer 4 Bilder hoch: pic1.jpg, pic2.jpg, pic3.jpg, pic4.jpg. Dann mischt die Reihenfolge der Bilder zu: pic4.jpg, pic1.jpg, pic3.jpg, pic2.jpg. Wie schreibe ich die Bildnamen in die DB, also wenn ich von der DB lese und in der Ansicht anzeige, sind die Bilder in der richtigen Reihenfolge, wie vom Benutzer angegeben? – PixelPaul

+0

@PixelPaul In der Tat. Was Stephen Mücke sagte, ist die beste Praxis. – Valkyrie

Verwandte Themen