Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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()));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        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());
        }
Ejemplo n.º 9
0
        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"));
        }
Ejemplo n.º 10
0
        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 }));
        }
Ejemplo n.º 11
0
        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());
        }