/// <summary> /// Inserts a picture /// </summary> /// <param name="formFile">Form file</param> /// <param name="defaultFileName">File name which will be use if IFormFile.FileName not present</param> /// <param name="virtualPath">Virtual path</param> /// <returns>Picture</returns> public virtual Picture InsertPicture(IFormFile formFile, string defaultFileName = "", string virtualPath = "") { var imgExt = new List <string> { ".bmp", ".gif", ".jpeg", ".jpg", ".jpe", ".jfif", ".pjpeg", ".pjp", ".png", ".tiff", ".tif" } as IReadOnlyCollection <string>; var fileName = formFile.FileName; if (string.IsNullOrEmpty(fileName) && !string.IsNullOrEmpty(defaultFileName)) { fileName = defaultFileName; } //remove path (passed in IE) fileName = _fileProvider.GetFileName(fileName); var contentType = formFile.ContentType; var fileExtension = _fileProvider.GetFileExtension(fileName); if (!string.IsNullOrEmpty(fileExtension)) { fileExtension = fileExtension.ToLowerInvariant(); } if (imgExt.All(ext => !ext.Equals(fileExtension, StringComparison.CurrentCultureIgnoreCase))) { return(null); } //contentType is not always available //that's why we manually update it here //http://www.sfsu.edu/training/mimetype.htm if (string.IsNullOrEmpty(contentType)) { switch (fileExtension) { case ".bmp": contentType = MimeTypes.ImageBmp; break; case ".gif": contentType = MimeTypes.ImageGif; break; case ".jpeg": case ".jpg": case ".jpe": case ".jfif": case ".pjpeg": case ".pjp": contentType = MimeTypes.ImageJpeg; break; case ".png": contentType = MimeTypes.ImagePng; break; case ".tiff": case ".tif": contentType = MimeTypes.ImageTiff; break; default: break; } } var picture = InsertPicture(_downloadService.GetDownloadBits(formFile), contentType, _fileProvider.GetFileNameWithoutExtension(fileName)); if (string.IsNullOrEmpty(virtualPath)) { return(picture); } picture.VirtualPath = _fileProvider.GetVirtualPath(virtualPath); UpdatePicture(picture); return(picture); }