public async Task <IActionResult> UploadImage([FromForm(Name = "image")] IFormFile uploadImg) { try { if (string.IsNullOrWhiteSpace(User.Identity.Name)) { return(BadRequest("User nicht eingeloggt, hochgeladene Datei kann User nicht zugeordnet werden!")); } if (uploadImg == null) { return(BadRequest("Datei konnt nicht entgegengenommen werde.")); } if (uploadImg.Length == 0) { return(BadRequest("Es wurde keine Datei übergeben (Dateigröße ist 0 Byte)")); } //Checken ob hochgeladene Datei ein Bild ist if (!_CheckDateiGleichBildService.CheckenDateiIstBild(uploadImg)) { return(BadRequest("Hochgeladene Datei ist kein Bild, momentan können nur Bilder hochgeladen werden!")); } //Filename randommässig erzeugen (Achtung Original-Dateiname nie abspeichern!!! Kann von bösatigen Usern zu Hackzwecken verwendet werden) string newUploadFileName = _CreateZufallsDateinamenService.CreateZufallsDateinamen(_CheckDateiGleichBildService.GetFileExtension(uploadImg)); string speicherOrdner = $"{_HostingEnvironment.WebRootPath}\\{User.Identity.Name}\\UploadFiles\\"; string speicherOrdnerDatei = $"{_HostingEnvironment.WebRootPath}\\{User.Identity.Name}\\UploadFiles\\{newUploadFileName}"; string webUrlBild = $"\\{User.Identity.Name}\\UploadFiles\\{newUploadFileName}"; //Existiert der Ordner? Wenn nein neu anlegen if (!Directory.Exists(speicherOrdner)) { Directory.CreateDirectory(speicherOrdner); } //Statt dem original Dateinamen wird eine Random-Name erzeugt der dann abgespeichert wird using (FileStream stream = System.IO.File.Create(speicherOrdnerDatei)) { uploadImg.CopyTo(stream); stream.Flush(); } //Speichern des Verweises (wo Datei abgelegt wurde) in der Datenbank var loggedInUser = await _UserManager.FindByNameAsync(User.Identity.Name); FinanceImage neuImage = new FinanceImage() { Path = speicherOrdnerDatei, UploadDate = DateTime.Now, ImageName = $"Am {DateTime.Now.ToShortDateString()} hochgeladenes Bild", Url = webUrlBild }; var storedImage = _ImageRepository.AddNeuImage(neuImage, loggedInUser); if (storedImage.Id <= 0) { return(BadRequest("Das hochgeladene Bild konnte nicht gespeichert werden.")); } //Metadaten des Bildes die an den Client zurückgesandt werden sobald Bild hochgeladen wurde ImageMetaViewModel uploadImageMeta = _Mapper.Map <FinanceImage, ImageMetaViewModel>(storedImage); //uploadImageMeta.ImageSource = webUrlBild; return(CreatedAtAction("UploadImage", uploadImageMeta)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }