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
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:
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.