2016-05-05 15 views
0

Ich habe eine Anwendung in asp.net MVC entwickelt und beschlossen, Dateien in Dateisystem statt Datenbank zu speichern (ich habe nur absolute Pfad zu Dateien in der db-Tabelle). Alle Dateien in der Entwicklungsphase habe ich in spezielle dedizierte Ordner im App-Ordner gelegt. Nach der Bereitstellung auf dem Server hatte ich Probleme mit IIS-Berechtigungen und konnte keine Dateien speichern. Dann entscheide ich mich, den erwähnten Ordner mit den Dateien in den C: \ Upload-Ordner zu verschieben und alles war in Ordnung, bis ich versuchte, Fotos zu bekommen und sie mit dem Thickbox-Dialog-Widget (Fotogalerie) anzuzeigen. Nach etwas googeln schließe ich, dass asp.net mvc Fotos nur von den relativen Wegen anzeigen kann. Was kann ich jetzt tun, speichert es in BLOBs nur eine Lösung?Ich kann keine Fotos von absoluten Pfad

Update:

Modellcode

public class PriloziViewModel 
{ 
    public string FileName { get; set; } 
    public string FilePath { get; set; }  
} 

Controller-Code:

public ActionResult VijestiSlike(Int64 vijestID) 
{ 
    var slike = from i in db.Slikes where i.FK_vijesti_id == vijestID select i; 

    PriloziViewModel s = new PriloziViewModel(); 
    List<PriloziViewModel> slist = new List<PriloziViewModel>(); 

    foreach (var j in slike) { 
     slist.Add(new PriloziViewModel() 
        { 
         FileName = j.naziv, 
         FilePath = j.link 
        }); 
    } 
    return View(slist); 
} 

anzeigen Code:

\ Uploads \

Virtuelles Verzeichnis (C: \ Uploads) Photo12345.jpg

: steht auch auf IIS
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<MyApp.Models.PriloziViewModel>>" %> 

<% foreach (var item in Model) { %>   
     <a href="<%: Html.DisplayFor(modelItem => item.FilePath) %>" title="" class="thickbox" rel="gallery-plants"> 
     <img src="<%: Html.DisplayFor(modelItem => item.FilePath) %>" style="width:120px;height:80px;" alt="" /></a> 

<% } %> 

Link ist in der Datenbank in einem Format C aufbewahrt.

+0

Wovon redest du? - * "Nach einigem googeln komme ich zu dem Schluss, dass asp.net mvc nur Fotos aus relativen Pfaden anzeigen kann" *, Sie müssen erneut googlen. – Lankymart

+0

Ihr Kommentar hat mir überhaupt nicht geholfen – Ognjen

+2

warum absolute Pfade in die Datenbank speichern? Dieser absolute Pfad bedeutet nichts, wenn es um den Browser geht. es ist nicht so, dass asp.net mvc Bilder von absoluten Pfaden nicht anzeigen kann. Der Browser kann den Ordner "C: \ Upload" auf Ihrem Server nicht sehen. Für die Website beginnt der absolute Pfad mit dem Domänennamen. In Windows beginnt der absolute Pfad mit dem Laufwerksbuchstaben. Wenn Sie Bilder in "C: \ Upload" speichern möchten, erstellen Sie ein virtuelles Verzeichnis in IIS und speichern Sie Pfade relativ zu diesem Verzeichnis. Oder erstellen Sie einen Bilderordner auf Ihrer Website und erteilen Sie diesem Ordner die entsprechenden Berechtigungen, damit Sie Dateien dorthin hochladen können. – Amila

Antwort

0

Lösung:

-Code oben richtig ist tatsächlich, nach der Installation von Virtual Directory die einzige Sache, die ich geändert habe, ist Pfad in der Datenbank. Das richtige Pfadformat ist /Uploads/Photo12345.jpg

Verwandte Themen