public ActionResult Upload(int id) { if (Request.Files.Count == 0) return null; var file = Request.Files[0]; if (file == null) return null; var fileData = GetFileContent(file); var userId = User.Identity.GetUserId(); using (var db = new ApplicationDbContext()) { var entityFile = new File() { Id = Guid.NewGuid(), Name = file.FileName, User = db.Users.Find(userId), DateCreated = DateTime.Now, Content = fileData, ContentType = file.ContentType, Category = db.Categories.Find(id) }; db.Files.Add(entityFile); db.SaveChanges(); } return null; }
public async Task PutFile_FileChunkCount_Correct() { // Arrange HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter())); var guid = Guid.NewGuid(); var moq = new Mock <IFilesRepository>(); var moqFileStreamRepo = new Mock <IFileStreamRepository>(); var moqConfigRepo = new Mock <IConfigRepository>(); var moqHttpContextWrapper = new Mock <HttpContextWrapper>(HttpContext.Current); var moqLog = new Mock <sl.IServiceLogRepository>(); var file = new File { ChunkCount = 1, FileId = guid }; var paramFileChunk = new FileChunk(); var httpContent = "my file"; HttpContent content = new ByteArrayContent(Encoding.UTF8.GetBytes(httpContent)); var stream = await content.ReadAsStreamAsync(); moq.Setup(t => t.PostFileHead(It.IsAny <File>())).ReturnsAsync(guid); moq.Setup(t => t.GetFileHead(It.IsAny <Guid>())).ReturnsAsync(file); moq.Setup(t => t.PostFileChunk(It.IsAny <FileChunk>())) .Callback <FileChunk>(chunk => paramFileChunk = chunk). ReturnsAsync(3); moq.Setup(t => t.UpdateFileHead(It.IsAny <Guid>(), It.IsAny <long>(), It.IsAny <int>())).Returns(Task.FromResult(0)); moqHttpContextWrapper.Setup(c => c.Request.GetBufferlessInputStream()).Returns(stream); moqConfigRepo.Setup(t => t.FileChunkSize).Returns(DefaultChunkSize); var controller = new FilesController(moq.Object, moqFileStreamRepo.Object, moqConfigRepo.Object, moqLog.Object) { Request = new HttpRequestMessage { RequestUri = new Uri("http://localhost/files"), Content = content }, Configuration = new HttpConfiguration() }; controller.Configuration.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "files/{id}", defaults: new { id = RouteParameter.Optional }); // Act // 1. Upload file var response = await controller.PutFileHttpContext(guid.ToString(), moqHttpContextWrapper.Object); // Assert Assert.IsTrue(response.Status == HttpStatusCode.OK); Assert.IsTrue(paramFileChunk.ChunkNum == file.ChunkCount + 2); }
private string GetWordFile(File file) { var app = new Application(); var wordContent = file.Content; var tmpFile = Path.GetTempFileName(); var tmpFileStream = System.IO.File.OpenWrite(tmpFile); tmpFileStream.Write(wordContent, 0, wordContent.Length); tmpFileStream.Close(); var pdf = Path.GetTempFileName(); var doc = app.Documents.Open(tmpFile); doc.ExportAsFixedFormat(pdf, WdExportFormat.wdExportFormatPDF); return pdf; }