Example #1
0
        /// <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));
        }
Example #4
0
        /// <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);
        }
Example #5
0
        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"));
        }
Example #6
0
        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());
        }