public async Task <File> UploadFile(HttpRequest Request, string Token, string FilePath) { var Handler = new JwtSecurityTokenHandler(); Token = Token.Replace("Bearer", "").Trim(); var JsonToken = Handler.ReadJwtToken(Token); string Id = JsonToken.Claims.First(c => c.Type == "id").Value; User User = this.FileContextInstance.Users.SingleOrDefault(u => u.Id == Id); if (User == null) { User = await this.AccountServiceInstance.Detail("Bearer " + Token); this.FileContextInstance.Users.Add(User); this.FileContextInstance.SaveChanges(); } File File = await FileStreamingHelper.StreamFile(Request, Id, FilePath); this.FileContextInstance.Files.Add(File); this.FileContextInstance.SaveChanges(); return(File); }
public async Task StreamFilemultipart() { var httpContext = new DefaultHttpContext(); // or mock a `HttpContext` httpContext.Request.Headers["token"] = "fake_token_here"; //Set header httpContext.Request.ContentType = "multipart/form-data"; var ms = new MemoryStream(); await FileStreamingHelper.StreamFile(httpContext.Request, _appSettings, new FakeSelectorStorage(new FakeIStorage())); }
public void FileStreamingHelper_HeaderFileName_base64StringTest_Uppercase() { var httpContext = new DefaultHttpContext(); // or mock a `HttpContext` httpContext.Request.Headers["filename"] = "VVBQRVJDQVNFLkpQRw=="; //Set header var result = FileStreamingHelper.HeaderFileName(httpContext.Request, _appSettings); Assert.AreEqual("UPPERCASE.JPG", result); }
public void FileStreamingHelper_HeaderFileName_base64StringTest() { var httpContext = new DefaultHttpContext(); // or mock a `HttpContext` httpContext.Request.Headers["filename"] = "MjAxOC0wNy0yMCAyMC4xNC41Mi5qcGc="; //Set header var result = FileStreamingHelper.HeaderFileName(httpContext.Request, _appSettings); Assert.AreEqual("2018-07-20-201452.jpg", result); }
public void FileStreamingHelper_HeaderFileName_Uppercase() { var httpContext = new DefaultHttpContext(); // or mock a `HttpContext` httpContext.Request.Headers["filename"] = "UPPERCASE.jpg"; //Set header var result = FileStreamingHelper.HeaderFileName(httpContext.Request, _appSettings); Assert.AreEqual("UPPERCASE.jpg", result); }
public void FileStreamingHelper_HeaderFileName_normalStringTest() { var httpContext = new DefaultHttpContext(); // or mock a `HttpContext` httpContext.Request.Headers["filename"] = "2018-07-20 20.14.52.jpg"; //Set header var result = FileStreamingHelper.HeaderFileName(httpContext.Request, _appSettings); Assert.AreEqual("2018-07-20-201452.jpg", result); }
public async Task <IActionResult> Post(Guid disputeGuid) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var tempFileFolder = _fileService.GetFilePath("Temp"); FileUtils.CheckIfNotExistsCreate(tempFileFolder); var fileModel = new FileResponse(); var files = await FileStreamingHelper.ParseRequestForm(this, tempFileFolder, fileModel); List <FileResponse> fileList = new List <FileResponse>(); foreach (var file in files.file) { var newFileGuid = Guid.NewGuid(); var createdDateTime = DateTime.UtcNow.GetCmDateTime(); var fileRelativePath = Path.Combine( createdDateTime.Year.ToString(), createdDateTime.Month.ToString(), createdDateTime.Day.ToString(), fileModel.FileType.ToString(), newFileGuid.ToString()); var fileRequest = new FileRequest { FileGuid = newFileGuid, FileSize = (int)file.Length, FileMimeType = file.ContentType, FileName = fileModel.FileName, OriginalFileName = file.Name, FileType = fileModel.FileType, FilePath = fileRelativePath, AddedBy = files.model.AddedBy, FilePackageId = files.model.FilePackageId }; var fileResponse = await _fileService.CreateAsync(fileRequest, createdDateTime); fileList.Add(fileResponse); var absolutePath = _fileService.GetFilePath(fileRelativePath); FileUtils.CheckIfNotExistsCreate(Path.GetDirectoryName(absolutePath)); System.IO.File.Move(file.TemporaryLocation, absolutePath); } return(Ok(fileList)); }
public async Task FileStreamingHelperTest_FileStreamingHelper_StreamFile_imagejpeg() { var createAnImage = new CreateAnImage(); FileStream requestBody = new FileStream(createAnImage.FullFilePath, FileMode.Open); _appSettings.TempFolder = createAnImage.BasePath; var streamSelector = new FakeSelectorStorage(new StorageHostFullPathFilesystem()); var formValueProvider = await FileStreamingHelper.StreamFile("image/jpeg", requestBody, _appSettings, streamSelector); Assert.AreNotEqual(null, formValueProvider.ToString()); await requestBody.DisposeAsync(); // Clean streamSelector.Get(SelectorStorage.StorageServices.HostFilesystem) .FileDelete(formValueProvider.FirstOrDefault()); }
public async Task FileStreamingHelper_MultipartRequestHelper() { var contentType = $"multipart/form-data; boundary=\"{Boundary}\""; // string contentType, Stream requestBody, AppSettings appSettings, // ISelectorStorage selectorStorage, string headerFileName = null var stream = MakeStream(TwoPartBody); var storage = new FakeIStorage(); storage.CreateDirectory(_appSettings.TempFolder); var streamSelector = new FakeSelectorStorage(storage); await FileStreamingHelper.StreamFile(contentType, stream, _appSettings, streamSelector); var tempPath = storage.GetAllFilesInDirectoryRecursive(_appSettings.TempFolder).FirstOrDefault(); Assert.IsTrue(tempPath?.EndsWith("a.txt")); }
public async Task <IActionResult> UploadCsv() { var stream = new MemoryStream(); var formValues = await FileStreamingHelper.StreamFileAsync(Request, stream); var replaceAll = false; bool.TryParse(formValues.GetValue("replaceAll").FirstValue, out replaceAll); var importAttempt = await _productManager.ImportCsvAsync(stream, replaceAll); if (!importAttempt.Success) { TempData["Exception"] = importAttempt.Exception.Message; return(RedirectToAction("Index", "Home")); } return(RedirectToAction("Results", new { operationId = importAttempt.Result })); }
public async Task <IActionResult> GetByUrl(int year, int month, int day, string filename, [FromQuery] string token, [FromQuery] bool?isInline = null) { if (token.IsBase64String() == false) { return(BadRequest(string.Format(ApiReturnMessages.TokenIsNotSpecified))); } var tokenWithFileId = token.Base64Decode().Split(":"); var isValidToken = await _tokenService.ValidateToken(tokenWithFileId[0]); if (isValidToken == false) { return(Unauthorized()); } var file = await _fileService.GetAsync(year, month, day, filename); if (file != null) { if (file.FileId.ToString() != tokenWithFileId[1]) { return(Unauthorized()); } var absoluteFilePath = _fileService.GetFilePath(file.FilePath); ////var contentDispositionType = isInline != null && (bool)isInline ? "inline" : "attachment"; var contentDispositionType = isInline ?? false ? "inline" : "attachment"; // Set up the content-disposition header with proper encoding of the filename var contentDisposition = new ContentDispositionHeaderValue(contentDispositionType); Response.Headers[HeaderNames.ContentDisposition] = contentDisposition.ToString(); return(await FileStreamingHelper.GetFile(absoluteFilePath, file.FileMimeType)); } return(NotFound()); }