/// <summary>
        /// Uploads prepare.
        /// 此时会把文件记录到临时表,DFS为空,reversion从file表中获取,该文件ID不代表在File中的ID
        /// </summary>
        /// <returns></returns>
        public JsonResult UploadPrepare(UploadPrepareModel model)
        {
            //FileName
            OauthTokenPair pair = unitOfWork.TokenReposity.GetTokenPair(model.oauth_token);
            NetDiskUser    user = unitOfWork.UserRepositiry.dbSet.SingleOrDefault(u => u.UserId == pair.UserId);

            db.NetdiskUsers.Attach(user);
            FileUncomplete fileUncomplete = new FileUncomplete
            {
                FileName    = model.FileName.GetFileName(),
                FilePath    = model.FileName.GetFilePath(),
                FileSize    = model.FileSize,
                Hash        = model.Hash,
                IsCompleted = false,
                Owner       = user
            };
            UploadPrepareViewModel viewmodel = new UploadPrepareViewModel();

            //以该hash的的相同路径的最新版本作为当前版本
            File thisVersion = db.Files.Where(f => f.FileName == fileUncomplete.FileName && f.FilePath == fileUncomplete.FilePath && f.Hash == model.Hash && !f.IsDeleted).OrderByDescending(f => f.Id).FirstOrDefault();

            if (thisVersion != null)
            {
                viewmodel.IsExitsRemote = true;
            }
            else
            {
                viewmodel.IsExitsRemote = false;
            }

            if (viewmodel.IsExitsRemote)
            {
                viewmodel.RemoteId        = thisVersion.Id;
                viewmodel.RemoteHash      = thisVersion.Hash;
                viewmodel.RemoteReversion = thisVersion.Reversion;
            }
            else
            {
                try
                {
                    db.FileUncomplete.Add(fileUncomplete);
                    db.SaveChanges();
                    viewmodel.ret     = 0;
                    viewmodel.Id      = fileUncomplete.Id;
                    viewmodel.hash    = fileUncomplete.Hash;
                    viewmodel.DFSPath = "\\" + fileUncomplete.Hash;
                }
                catch (System.Exception ex)
                {
                    viewmodel.ret = -1;
                    viewmodel.msg = "save file to FileUncomplete failed!err info:" + ex.Message;
                }
            }

            return(Json(viewmodel, JsonRequestBehavior.AllowGet));
        }
Exemple #2
0
 public void Save()
 {
     context.SaveChanges();
 }