/// <summary> /// Создаёт объект FileModel и загружает его в папку www/files /// </summary> /// <param name="_context"></param> /// <param name="_appEnvironment"></param> /// <param name="uploadedFile"></param> /// <param name="name"></param> /// <returns></returns> public async Task <FileModel> UploadFileAsync(IFormFile uploadedFile, string name, FileDataTypeEnum fileDataTypeEnum) { FileModel fileModel = new FileModel(); fileModel.ContentType = uploadedFile.ContentType; fileModel.UploadDate = DateTime.Now; fileModel.Name = name; string fileName = await UploadFileToDisk(uploadedFile); fileModel.FileName = Path.GetFileName(uploadedFile.FileName); fileModel.Path = Path.Combine("files", fileName);; if (Path.GetExtension(uploadedFile.FileName) == ".pdf") { fileModel.ContentType = "application/pdf"; } _context.Files.Add(fileModel); await _context.SaveChangesAsync(); FileToFileType ftf = new FileToFileType { FileDataTypeId = (int)fileDataTypeEnum, FileModelId = fileModel.Id }; _context.FileToFileTypes.Add(ftf); await _context.SaveChangesAsync(); return(fileModel); }
public async Task <IActionResult> Edit(int id, [Bind("FileToFileTypeId,FileModelId,FileDataTypeId")] FileToFileType fileToFileType) { if (id != fileToFileType.FileToFileTypeId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(fileToFileType); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!FileToFileTypeExists(fileToFileType.FileToFileTypeId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["FileDataTypeId"] = new SelectList(_context.FileDataTypes, "FileDataTypeId", "FileDataTypeId", fileToFileType.FileDataTypeId); ViewData["FileModelId"] = new SelectList(_context.Files, "Id", "Id", fileToFileType.FileModelId); return(View(fileToFileType)); }
public async Task <IActionResult> Create([Bind("FileToFileTypeId,FileModelId,FileDataTypeId")] FileToFileType fileToFileType) { if (ModelState.IsValid) { _context.Add(fileToFileType); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["FileDataTypeId"] = new SelectList(_context.FileDataTypes, "FileDataTypeId", "FileDataTypeId", fileToFileType.FileDataTypeId); ViewData["FileModelId"] = new SelectList(_context.Files, "Id", "Id", fileToFileType.FileModelId); return(View(fileToFileType)); }
/// <summary> /// Создаёт объект FileModel и загружает его в папку www/files /// </summary> /// <param name="_context"></param> /// <param name="_appEnvironment"></param> /// <param name="uploadedFile"></param> /// <param name="name"></param> /// <returns></returns> public static async Task <FileModel> LoadFile(AppIdentityDBContext _context, IHostingEnvironment _appEnvironment, IFormFile uploadedFile, string name, FileDataTypeEnum fileDataTypeEnum) { FileModel fileModel = new FileModel(); fileModel.ContentType = uploadedFile.ContentType; fileModel.Name = name; string fileName = /*DateTime.Now.ToString("yyyy-MM-dd-") +*/ Guid.NewGuid().ToString() + Path.GetExtension(uploadedFile.FileName); // путь к папке files string[] paths = { _appEnvironment.WebRootPath, "files", fileName }; string path = Path.Combine(paths); // сохраняем файл в папку files в каталоге wwwroot using (var fileStream = new FileStream(path, FileMode.Create)) { await uploadedFile.CopyToAsync(fileStream); } fileModel.FileName = Path.GetFileName(uploadedFile.FileName); fileModel.Path = Path.Combine("files", fileName);; if (Path.GetExtension(uploadedFile.FileName) == ".pdf") { fileModel.ContentType = "application/pdf"; } _context.Files.Add(fileModel); await _context.SaveChangesAsync(); FileToFileType ftf = new FileToFileType { FileDataTypeId = (int)fileDataTypeEnum, FileModelId = fileModel.Id }; _context.FileToFileTypes.Add(ftf); await _context.SaveChangesAsync(); return(fileModel); }
public async Task <IActionResult> AddFile(IFormFile uploadedFile, int[] SelectedFileDataTypeIds, FileModel fileModel) { if (uploadedFile != null) { string fileName = /*DateTime.Now.ToString("yyyy-MM-dd-") +*/ Guid.NewGuid().ToString() + Path.GetExtension(uploadedFile.FileName); // путь к папке files string[] paths = { _appEnvironment.WebRootPath, "files", fileName }; string path = Path.Combine(paths); // сохраняем файл в папку files в каталоге wwwroot using (var fileStream = new FileStream(path, FileMode.Create)) { await uploadedFile.CopyToAsync(fileStream); } fileModel.FileName = Path.GetFileName(uploadedFile.FileName); //fileModel.Path = path; fileModel.Path = Path.Combine("files", fileName); if (Path.GetExtension(uploadedFile.FileName) == ".pdf") { fileModel.ContentType = "application/pdf"; } _context.Files.Add(fileModel); _context.SaveChanges(); // Добавляем привязку к списку типов файлов foreach (var selectedFileDataTypeId in SelectedFileDataTypeIds) { FileToFileType newElement = new FileToFileType(); newElement.FileDataTypeId = selectedFileDataTypeId; newElement.FileModelId = fileModel.Id; _context.FileToFileTypes.Add(newElement); } _context.SaveChanges(); } return(RedirectToAction("Index")); }
public async Task <IActionResult> Edit(FileModel fileModel, int[] SelectedFileDataTypeIds) { if (ModelState.IsValid) { try { FileModel file = _context.Files.SingleOrDefault(f => f.Id == fileModel.Id); if (file == null) { return(NotFound());; } file.Name = fileModel.Name; file.ContentType = fileModel.ContentType; _context.Update(file); await _context.SaveChangesAsync(); // Удаляем существующие привязки var privyazki = _context.FileToFileTypes.Where(ftf => ftf.FileModelId == file.Id); _context.FileToFileTypes.RemoveRange(privyazki); // Добавляем привязку к списку типов файлов foreach (var selectedFileDataTypeId in SelectedFileDataTypeIds) { FileToFileType newElement = new FileToFileType(); newElement.FileDataTypeId = selectedFileDataTypeId; newElement.FileModelId = fileModel.Id; _context.FileToFileTypes.Add(newElement); } _context.SaveChanges(); } catch (DbUpdateConcurrencyException) { return(NotFound()); } return(RedirectToAction(nameof(Index))); } return(View()); }