private CommonResponse FinshFastUpload(FinishUploadRequest request) { ErrorCodes errorCode = ErrorCodes.NoError; if (!CheckUploadFinishInfo(request.Md5, request.RecognizeId, request.UserName, out errorCode)) { return(new CommonResponse() { Result = false, ErrorCode = errorCode }); } using (var dbContext = createDBContext()) { var fileInfo = dbContext.FileInfos.FirstOrDefault(x => x.Md5 == request.Md5); var machineInfo = dbContext.MachineInfos.FirstOrDefault(x => x.RecognizeId == request.RecognizeId); if (!string.IsNullOrEmpty(request.UserName)) { var userInfo = dbContext.UserInfos.FirstOrDefault(x => x.UserName == request.UserName); var userMachineInfo = dbContext.UserMachineInfos.Where(x => x.MachineId == machineInfo.Id && x.UserId == userInfo.Id); //update File AddOrUpdateUserFile(userInfo.Id, fileInfo.Id, request.ClientFileName); } return(new CommonResponse() { Result = AddOrUpdateMachineFile(machineInfo.Id, fileInfo.Id, request.ClientFileName) }); } }
public override Task <CommonResponse> FinishUpload(FinishUploadRequest request, ServerCallContext context) { if (request.IsFastUpload) { return(Task.FromResult(FinshFastUpload(request))); } else { return(Task.FromResult(FinishNormalUpload(request))); } }
private CommonResponse FinishNormalUpload(FinishUploadRequest request) { //ErrorCodes errorCode = ErrorCodes.NoError; //if (!CheckUploadFinishInfo(request.Md5, request.RecognizeId, request.UserName, out errorCode)) //{ // return new CommonResponse() { Result = false, ErrorCode = errorCode }; //} if (!UploadStateManager.Instance.UploadStateCache.ContainsKey(request.Md5)) { return(new CommonResponse() { Result = false, ErrorCode = ErrorCodes.FileNotExistInServerCache }); } //change cache file name var state = UploadStateManager.Instance.UploadStateCache[request.Md5]; string cachePath = state.CacheFilePath; if (!File.Exists(cachePath)) { return(new CommonResponse() { Result = false, ErrorCode = ErrorCodes.CacheFileNotExist }); } string newFilePath = Path.Combine(Path.GetDirectoryName(cachePath), request.Md5); File.Move(cachePath, newFilePath, true); //compare md5 if (Helper.GetMD5HashFromFile(newFilePath) != request.Md5) { return(new CommonResponse() { Result = false, ErrorCode = ErrorCodes.Md5CompareError }); } using (var dbContext = createDBContext()) { ServerFile fileInfo = new ServerFile() { CreateTime = DateTime.Now, Md5 = request.Md5, ServerPath = newFilePath, Size = new FileInfo(newFilePath).Length }; fileInfo = dbContext.Add(fileInfo).Entity; dbContext.SaveChanges(); var machineInfo = dbContext.MachineInfos.FirstOrDefault(x => x.RecognizeId == request.RecognizeId); if (!string.IsNullOrEmpty(request.UserName)) { var userInfo = dbContext.UserInfos.FirstOrDefault(x => x.UserName == request.UserName); var userMachineInfo = dbContext.UserMachineInfos.Where(x => x.MachineId == machineInfo.Id && x.UserId == userInfo.Id); //update File AddOrUpdateUserFile(userInfo.Id, fileInfo.Id, request.ClientFileName); } bool result = AddOrUpdateMachineFile(machineInfo.Id, fileInfo.Id, request.ClientFileName); //remove the cache if (result) { UploadStateManager.Instance.UploadStateCache.Remove(request.Md5); } return(new CommonResponse() { Result = result }); } }