#

 

 

Wie bekomme ich den Pfad einer Upload Datei in Asp.Net MVC?

 

Die hochgeladene Datei erhält man im Upload-Task als Parameter (IFormFile file)

Den Parameter muss man einfach in die Klammer hinzufügen. Asp.Net füllt dann die vorhandenen Daten als Bindung zur Laufzeit ein, wenn solche vorhanden sind.

 

Die Datei hat den kurzen Dateiname in

file.FileName

 

Im Upload Code unter Asp.Net des Upload Controller

[HttpPost]

        public async Task<IActionResult> Upload_ImageFile(IFormFile file)

        {

            //

            if (file == null || file.Length == 0) return Content("file not selected");

 

            string path_Root = _appEnvironment.WebRootPath;

            string path_to_Images = path_Root + "\\User_Files\\Images\\" + file.FileName;

 

 

Im Debug Mode sieht man dass die IFile beim Upload zu Auswerten die Eigenschaften hat (Siehe Watch 1 Dialog):

*ContentType

*Filename

*Length

-                   file     {Microsoft.AspNetCore.Http.Internal.FormFile}          Microsoft.AspNetCore.Http.IFormFile {Microsoft.AspNetCore.Http.Internal.FormFile}

                    ContentDisposition  "form-data; name=\"file\"; filename=\"image002.jpg\""         string

                    ContentType "image/jpeg" string

                    FileName      "image002.jpg"       string

+                  Headers       {Microsoft.AspNetCore.Http.HeaderDictionary}          Microsoft.AspNetCore.Http.IHeaderDictionary {Microsoft.AspNetCore.Http.HeaderDictionary}

                    Length          65727 long

                    Name "file"   string

 

 

 

Root Verzeichnis

Das aktuelle Verzeichnis erhält man, indem man das IHostingEnvironment einbindet.

Hierzu den folgenden Code in den Controller einbauen.

public class ImageController : Controller

    {

 

        private readonly IHostingEnvironment _appEnvironment;

        public ImageController( IHostingEnvironment appEnvironment)

        {

            _appEnvironment = appEnvironment;

        }

..

 

Anschliessend erhält man das Basisverzeichnis der Webanwendung

Mit _appEnvironment.WebRootPath;

string path_Root = _appEnvironment.WebRootPath;

string path_to_Images = path_Root + "\\User_Files\\Images\\" + file.FileName;           

 

Dabei zeigt die .WebRootPath auf den Pfad \wwwroot in der Anwendung.

Hinweis: In asp.net webforms ist das normalerweise der übergeordnete Verzeichnis.

 

Auszug aus dem IHostingEnvironment

path_to_Images          "C:\\_Daten\\..\\IWois_Core\\wwwroot\\User_Files\\Images\\image002.jpg"

path_Root              "C:\\_Daten\\..\\IWois_Core\\IWois_Core\\wwwroot"

 

Screenshot im Debugmode        

 

Wwwroot Verzeichnis

Das wwwroot Verzeichnis wird in asp.net mvc unterhalb des Entwicklungsverzeichnisses eingebettet.

Hier sollten demzufolge auch dann die UserFiles zur Ein und Ausgabe eingeordnet sein.

 

 

Verzeichnis Pfad mit System.IO  Directory

 

Wenn man in Asp.Net die System.IO Funktionenen von Directory und DirectoryInfo verwendet, dann kommt man auf das C-Laufwerk und Verzeichnisse oberhalb der Anwendung.

Hierzu hat eine Asp Webanwendung oft keinen Zugriff.

 

GetDirectoryRoot

string path_to_Images = Directory.GetDirectoryRoot("~");

 

Ergebnis:

C:\

 

 

 

 

FileUpload Verzeichnisse in Asp.Net

Beim Upload von Dateien in Asp.Net werden die Dateien zunächst in einen Temporären Verzeichnis gespeichert.

 

Von dort warden diese Dateien dann in das Zielverzeichnis kopiert.

            string path_Root = _appEnvironment.WebRootPath;

            string path_to_Images = path_Root + "\\User_Files\\Images\\" + file.FileName;

           

            using (var stream = new FileStream(path_to_Images, FileMode.Create))

            {

                await file.CopyToAsync(stream);

            }

Nach dem Erstellen des Zielverzeichnisses in dem wwwroot Verzeichnis wird der Upload File und Filecopy auch umgesetzt.

 

 

 

 

 

 

 

 

Mobile

.

soap2day