/// <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)); }
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(); } } }