2016-09-23 4 views
-1

Ich entwickle eine MVC4-Anwendung und Hosting in IIS-Webserver.So erstellen Sie Ordner in MVC4

Ich möchte einige Dateien im Ordner UploadedFile innerhalb F Laufwerk hochladen und speichern. Ich schrieb von Code unter Stück Ordner zu erstellen, aber es ist nicht

if (!System.IO.Directory.Exists(Server.MapPath("~/F:/UploadedFile"))) 
{ 
    System.IO.Directory.CreateDirectory(Server.MapPath("~/F:/UploadedFile")); 
} 

Wenn ich zu IIS bin Hosting funktioniert werde ich innerhalb alle veröffentlichten Dateien halten inetpub (Dateien wie DLL (bin), css, js usw.) . Aber ich plane, pdf-Dateien zu behalten, die vom Benutzer in Laufwerk F hochgeladen werden.

Ist diese gute Praxis, Dateien außerhalb c Laufwerk zu halten? Kann jemand bitte ein paar Vorschläge machen.

+0

Keine rpob Dateien überall zu halten. Erstellen Sie einfach ein virtuelles Verzeichnis und stellen Sie es mit der Website – Imad

+0

dar. Ich fand dies und arbeitete String folderName = @ "F: \ UploadedFile"; if (! System.IO.Directory.Exists (OrdnerName)) { System.IO.Directory.CreateDirectory (OrdnerName); } –

+0

Diese Codezeile funktioniert jedoch nicht String folderName = @ "F: \ UploadedFile"; byte [] bytes = System.IO.File.ReadAllBytes (Ordnername + Dateiname); –

Antwort

0

Es ist nichts falsch daran, Ihre Dateien außerhalb des Webordners zu behalten, solange Sie sich um die ordnungsgemäße Einrichtung der Sicherheit und der ACLs kümmern. Dieses Problem ist nicht trivial und Sie können mit Sicherheitsproblemen enden, wenn Sie es nicht richtig konfigurieren.

In Ihrem Fall denke ich, dass Sie einen falschen Pfad bekommen, wenn Sie versuchen, die Daten aus der Datei zu bekommen.

In dieser Zeile:

System.IO.File.ReadAllBytes(folderName + filename); 

folder + Dateiname wird @"F:\UploadedFile<filename>" zurück. Beispiel: @"F:\UploadedFilefile1.docx" Sie erhalten also einen Fehler, da es sich um einen ungültigen Pfad handelt. Um diese Fehler zu vermeiden, sollten Sie Path.Combine verwenden.

using System.IO; 

//this will return @"F:\UploadedFile\file1.docx" 
var fullFileName = Path.Combine(folderName, fileName); 
var bytes= System.IO.File.ReadAllBytes(fullFileName); 

//do something with your file. 

Hoffe, das hilft!

Verwandte Themen