예제 #1
0
 /// <summary>
 /// 获取文件MD5
 /// </summary>
 /// <param name="file"></param>
 /// <returns></returns>
 public static string GetMD5(this FileInfo file)
 {
     if (!file.Exists)
     {
         throw new Exception($"无法读取MD5,文件{file.FullName}不存在");
     }
     return(SecureHelper.GetFileMD5(file.FullName));
 }
예제 #2
0
        public string UploadFileAfterCheckRepeat(FileInfo file, string uid,
                                                 ref string file_url, ref string file_name, bool DeleteFileAfterUploadToQiniu = true)
        {
            try
            {
                if (!file.Exists)
                {
                    throw new Exception("无法在磁盘上找到文件");
                }

                var dal = new UpFileDal();

                var dbmodel = new UpFileModel();
                dbmodel.UserID     = uid;
                dbmodel.FileName   = file.Name;
                dbmodel.FileExt    = file.Extension;
                dbmodel.FileSize   = (int)file.Length;
                dbmodel.FilePath   = file.FullName;
                dbmodel.CreateTime = DateTime.Now;
                //获取文件md5值
                dbmodel.FileMD5 = SecureHelper.GetFileMD5(dbmodel.FilePath);
                if (!ValidateHelper.IsPlumpString(dbmodel.FileMD5))
                {
                    throw new Exception("获取文件MD5失败");
                }
                //判断文件是否存在于七牛
                var  qiniu_file        = QiniuHelper.FindEntry(dbmodel.FileMD5);
                bool FindInQiniu       = qiniu_file.HasFile();
                bool uploadToQiniuByMe = false;
                if (FindInQiniu)
                {
                    //直接拿七牛中的文件地址
                    dbmodel.FileUrl = QiniuHelper.GetUrl(dbmodel.FileMD5);
                }
                else
                {
                    var url = QiniuHelper.Upload(file.FullName, dbmodel.FileMD5);
                    dbmodel.FileUrl = url;
                    //标记文件是我上传到七牛的
                    uploadToQiniuByMe = true;
                }
                //运行到这里,七牛已经有文件了
                //判断是否要添加到数据库
                var res = AddFile(dbmodel);
                if (ValidateHelper.IsPlumpString(res))
                {
                    //如果是我上传到七牛的并且保存本地数据库失败就删除
                    if (uploadToQiniuByMe)
                    {
                        QiniuHelper.Delete(dbmodel.FileMD5);
                    }
                    return("保存到数据库失败");
                }

                file_name = dbmodel.FileName;
                file_url  = dbmodel.FileUrl;

                return(SUCCESS);
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                if (DeleteFileAfterUploadToQiniu)
                {
                    file.Delete();
                }
            }
        }