public async Task FileUploadTest() { var FileMoq = new Mock <IFormFile>(); var cd = Directory.GetCurrentDirectory(); FileMoq.Setup(f => f.OpenReadStream()) .Returns(new FileStream($"{cd}\\..\\..\\..\\..\\RoLaMoDS\\Capture.png", FileMode.Open)); var model = new UploadImageFileModel { File = FileMoq.Object, Latitude = 0, Longitude = 0, Scale = 17 }; var ret = await MainControllerService.UploadImageFromFile(model, Guid.Empty); Assert.True(File.Exists(cd + "\\images\\101.bmp")); var expected = (new { resultImagePath = "\\images\\101.bmp" }, 200, ""); Assert.Equal(expected.Item2, ret.Item2); Assert.Equal(expected.Item3, ret.Item3); Assert.Equal(expected.Item1.GetHashCode(), ret.Item1.GetHashCode()); File.Delete(cd + "\\images\\101.bmp"); }
/// <summary> /// Upload image from file with longitude, lantitude and scale /// </summary> /// <param name="model">Model to upload</param> /// <returns>Task of (result, state, message)</returns> public async Task <(object, int, string)> UploadImageFromFile(UploadImageFileModel model, Guid UserId) { var filePath = _fileService.GetNextFilesPath(1, DirectoryType.Upload)[0]; if (model.File.OpenReadStream().TryConvertToImage(out Image img)) { img.Save(filePath, System.Drawing.Imaging.ImageFormat.Bmp); string retUrl = filePath.Remove(0, filePath.LastIndexOf("\\images\\")); ImageDBModel image = new ImageDBModel { Cells = null, Expires = DateTime.Now + TimeSpan.FromDays(1), IsPreview = model.IsPreview, Longitude = -1, Latitude = -1, Scale = -1, URL = retUrl }; if (UserId == Guid.Empty) { _applicationDBContext.Images.Add(image); } else { _applicationDBContext.Users.Find(UserId).DownloadedImages.Add(image); } await _applicationDBContext.SaveChangesAsync(); return(new { resultImagePath = retUrl }, 200, ""); } return("", 400, "File_Not_Image"); }
public async Task <IActionResult> UploadImageFromFile(UploadImageFileModel model) { return(await Upload <UploadImageFileModel>(model)); }