コード例 #1
0
ファイル: FileEntityService.cs プロジェクト: schwarzr/Samples
        public async Task <User> GetOrCreateUserAsync(string name)
        {
            var dbUser = await _context.Users.FirstOrDefaultAsync(p => p.Name == name);

            if (dbUser == null)
            {
                dbUser = new User {
                    Name = name
                };
                _context.Users.Add(dbUser);
                await _context.SaveChangesAsync();
            }
            return(dbUser);
        }
コード例 #2
0
        public async Task <IFileResponse> DeleteDocumentAsync(int documentId)
        {
            try
            {
                var file = await _appDbContext.Files.FirstOrDefaultAsync(k => k.Id == documentId);

                if (file == null)
                {
                    return(new FileResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound));
                }
                var fileDb = await _fileDbContext.FileDB.FirstOrDefaultAsync(k => k.Id == file.IdGuid);

                if (fileDb == null)
                {
                    return(new FileResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound));
                }

                _fileDbContext.FileDB.Remove(fileDb);
                await _fileDbContext.SaveChangesAsync();

                _appDbContext.Files.Remove(file);
                await _appDbContext.SaveChangesAsync();

                return(new FileResponse(true, "Success", HttpStatusCode.Accepted));
            }
            catch (Exception e)
            {
                return(new FileResponse(e));
            }
        }
コード例 #3
0
        public async Task <IActionResult> Post([FromRoute] string connectionId, [FromBody] FileViewModel model)
        {
            var fileId   = Guid.NewGuid();
            var filename = Path.Combine(_configuration.GetValue <string>("RootDirectory"),
                                        Path.GetRandomFileName()).Replace("\\", "/");

            _dbContext.Files.Add(new FileMetadata
            {
                Id          = fileId,
                RawName     = model.Filename,
                Filename    = filename,
                Size        = model.Size,
                CreatedAt   = DateTime.Now,
                ContentType = model.ContentType,
                State       = FileState.Uploading,
                Hash        = model.Hash,
                FilledSize  = 0
            });
            await _dbContext.SaveChangesAsync(HttpContext.RequestAborted);

            _mergingQueue.QueueWorkItem(new Services.FileInfo
            {
                FileId   = fileId,
                Size     = model.Size,
                Filename = filename
            });

            _memoryCache.Set(fileId, connectionId);

            return(Created($"/files/{fileId}", new { Id = fileId }));
        }
コード例 #4
0
 public async static void SaveFileToDatabase(File fileModel)
 {
     using (var context = new FileDbContext())
     {
         context.Files.Add(fileModel);
         await context.SaveChangesAsync();
     }
 }
コード例 #5
0
 public async static void SaveStatusToDatabase(Status status)
 {
     using (var context = new FileDbContext())
     {
         context.Statuses.Add(status);
         await context.SaveChangesAsync();
     }
 }
コード例 #6
0
        public async Task <List <Data> > CreateData(List <Data> data)
        {
            await _context.Data.AddRangeAsync(data);

            await _context.SaveChangesAsync();

            return(data);
        }
コード例 #7
0
ファイル: FileService.cs プロジェクト: ooocode/WebDisk
        /// <summary>
        /// 创建文件
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public async Task <bool> AddFileAsync(AddFileDto dto)
        {
            await fileDbContext.Files.AddAsync(new Models.File
            {
                Id             = GuidEx.NewGuid(),
                DirectoryId    = long.Parse(dto.DirectoryId),
                UserId         = userId,
                OriginFileName = dto.FileName,
                UploadFilePath = dto.Link,
                Size           = dto.Size,
                ModifyDatetime = DateTimeOffset.Now,
                CreateTime     = DateTimeOffset.Now,
                IsDeleted      = false
            });

            int rows = await fileDbContext.SaveChangesAsync();

            return(rows > 0);
        }
コード例 #8
0
        private async Task UploadIntoFileDbAsync(Guid id, IFormFile formFile)
        {
            var fileDb = new FileDB()
            {
                Id    = id,
                Bytes = formFile.OpenReadStream().ToBytes()
            };

            await _fileDbContext.FileDB.AddAsync(fileDb);

            await _fileDbContext.SaveChangesAsync();
        }
コード例 #9
0
ファイル: DirectoryService.cs プロジェクト: ooocode/WebDisk
        /// <summary>
        /// 创建文件夹
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public async Task AddDirectoryAsync(AddDirectoryDto dto)
        {
            var id = GuidEx.NewGuid();

            if (!long.TryParse(dto.PId, out long pid))
            {
                pid = 0;
            }

            string path   = null;
            var    parent = await fileDbContext.FileDirectories.FirstOrDefaultAsync(e => e.UserId == userId && e.Id == pid);

            if (parent == null)
            {
                //pid = 0
                path = $"0|{id}";
            }
            else
            {
                path = $"{parent.Path}|{id}";
            }

            FileDirectory fileDirectory = new FileDirectory
            {
                Id             = id,
                CreateTime     = DateTimeOffset.Now,
                Name           = dto.Name,
                PId            = pid,
                Path           = path,
                UserId         = userId,
                IsDeleted      = false,
                ModifyDatetime = DateTimeOffset.Now
            };

            await fileDbContext.FileDirectories.AddAsync(fileDirectory);

            await fileDbContext.SaveChangesAsync();
        }
コード例 #10
0
ファイル: FileEntityService.cs プロジェクト: schwarzr/Samples
        public async Task <FileReference> InsertFileReferenceAsync(FileReference fileReference)
        {
            using (var db = new FileDbContext())
            {
                if (await db.FileReferences.AnyAsync(p => p.AuthorId == fileReference.Author.Id && p.Name == fileReference.Name))
                {
                    throw new FileReferenceAlreadyExistsException();
                }

                db.FileReferences.Add(fileReference);
                db.Entry(fileReference.Author).State = EntityState.Unchanged;
                var saved = await db.SaveChangesAsync();
            }
            return(fileReference);
        }
コード例 #11
0
        public async Task <IActionResult> UploadProfileImage(string userId, ByteArrayPart request)
        {
            var profileImageInDb = await _context.ProfileImageFiles.Where(x => x.UserId == userId).FirstOrDefaultAsync();

            if (profileImageInDb != null)
            {
                return(BadRequest("User already has a profile picture"));
            }

            var guidId      = Guid.NewGuid();
            var uploadImage = new ProfileImageFile()
            {
                Id                = guidId.ToString(),
                UserId            = userId,
                ProfileImageBytes = request.Value,
                FileName          = request.FileName,
                ContentType       = request.ContentType
            };

            _context.ProfileImageFiles.Add(uploadImage);
            await _context.SaveChangesAsync();

            return(Ok());
        }
コード例 #12
0
ファイル: FileSharedService.cs プロジェクト: ooocode/WebDisk
        /// <summary>
        /// 创建文件共享
        /// </summary>
        /// <returns></returns>
        public async Task <FileShared> CreateSharedFileAsync(CreateSharedDto dto)
        {
            long fileId = long.Parse(dto.FileId);

            //先判断文件存不存在
            var exist = await fileDbContext.Files.AnyAsync(e => e.Id == fileId && e.UserId == userId);

            if (exist)
            {
                var    sharedId = GuidEx.NewGuid();
                string code     = string.Empty;
                if (dto.HadCode)
                {
                    code = (new Random()).Next(1000, 9999).ToString();
                }


                if (dto.Days <= 0)
                {
                    dto.Days = 3650;
                }

                fileDbContext.FileShareds.Add(new FileShared
                {
                    Id          = sharedId,
                    Code        = code,
                    EndDateTime = DateTimeOffset.Now.AddDays(dto.Days),
                    FileId      = fileId
                });

                int row = await fileDbContext.SaveChangesAsync();

                return(await GetFileSharedAsync(new GetFileSharedDto { Code = code, SharedId = sharedId }));
            }
            return(null);
        }
コード例 #13
0
        public async Task <IdentityResult> SaveFileAsync()
        {
            try
            {
                await _fileContext.SaveChangesAsync();

                return(IdentityResult.Success);
            }
            catch (Exception e)
            {
                return(IdentityResult.Failed(new IdentityError()
                {
                    Code = "Error", Description = e.Message
                }));
            }
        }
コード例 #14
0
ファイル: FileEntityService.cs プロジェクト: schwarzr/Samples
        public async Task <User> GetOrCreateUserAsync(string name)
        {
            using (var db = new FileDbContext())
            {
                var dbUser = await db.Users.FirstOrDefaultAsync(p => p.Name == name);

                if (dbUser == null)
                {
                    dbUser = new User {
                        Name = name
                    };
                    db.Users.Add(dbUser);
                    await db.SaveChangesAsync();
                }
                return(dbUser);
            }
        }
        private async Task SaveFile(CriteriaClaimRequestView model, UserInfo userInfo)
        {
            foreach (var formFile in model.AttachmentFile)
            {
                if (formFile == null)
                {
                    continue;
                }
                var data = new File()
                {
                    IdGuid        = Guid.NewGuid(),
                    CorrelationId = model.CorrelationId,
                    SizeMb        = GetFileSize(formFile.Length),
                    Name          = formFile.FileName,
                    ProviderName  = "SqlProvider",
                    Created       = DateTime.UtcNow,
                    MimeType      = formFile.ContentType,
                    Modified      = DateTime.UtcNow,
                    CreatedBy     = userInfo.Email,
                    ModifiedBy    = userInfo.Email
                };

                await _appDbContext.Files.AddAsync(data);

                await _appDbContext.SaveChangesAsync();

                var fileDb = new FileDB()
                {
                    Id    = data.IdGuid,
                    Bytes = StreamToBytes(formFile.OpenReadStream())
                };

                await _fileDbContext.FileDB.AddAsync(fileDb);

                await _fileDbContext.SaveChangesAsync();
            }
        }