//最后一块文件块上传完成,文件块合并好之后
if (currentBlock == FileBlocks)
{
if (File.Exists(absolutePath))
{
AddTxtLog("开始压缩包MD5校验。");
#region MD5校验及压缩包文件解压
//压缩包MD5校验
string MD5String = GetFileMD5(absolutePath);
if (MD5String.ToUpper() != toVerifyString.ToUpper())
{
result = "压缩包(" + absolutePath + ")上传不完整!传过来的MD5校验码:" + toVerifyString + ",服务器生成的校验码:" + MD5String + "。";
ExceptionHandler.HandleWebException(logger, "405", result, Context, username);
Context.Response.Write(JsonHelper.ToJson(result));
AddTxtLog(result);
return;
}
//文件解压
if ((absolutePath.EndsWith(".zip") || absolutePath.EndsWith(".rar")
|| absolutePath.EndsWith(".ZIP") || absolutePath.EndsWith(".RAR")))
{
AddTxtLog("开始压缩包文件解压。");
DeCompressFile(absolutePath, absolutePath.Substring(0, absolutePath.LastIndexOf('.')), ""); //传:压缩包文件绝对路径,压缩包解压文件夹绝对路径
}
//JSON字符串反序列化为对象
DataContractJsonSerializer deSerializer = new DataContractJsonSerializer(typeof(List<Obj_ImageValidation>));
MemoryStream memoryStre = new MemoryStream(Encoding.UTF8.GetBytes(MD5str));
List<Obj_ImageValidation> MD5check = deSerializer.ReadObject(memoryStre) as List<Obj_ImageValidation>;
memoryStre.Close();
memoryStre.Flush();
memoryStre.Dispose();
AddTxtLog("对解压后的每张图片进行MD5校验");
//对解压后的每张图片进行MD5校验
string MD5Code = "";
string PicfolderName = absolutePath.Substring(0, absolutePath.LastIndexOf('.')); //图片存放的文件夹名称
foreach (Obj_ImageValidation iv in MD5check)
{
if (File.Exists(PicfolderName + "\\" + iv.fileName))
{
MD5Code = GetFileMD5(PicfolderName + "\\" + iv.fileName);
if (MD5Code.ToUpper() != iv.CheckCode.ToUpper())
{
result = "图片(" + PicfolderName + "\\" + iv.fileName + ")上传不完整!传过来的MD5校验码:" + iv.CheckCode + ",服务器生成的校验码:" + MD5Code + "。";
ExceptionHandler.HandleWebException(logger, "406", result, Context, username);
Context.Response.Write(JsonHelper.ToJson(result));
AddTxtLog(result);
return;
}
}
else
{
result = "在对每张图片做MD5校验时发现,根据从APP传过来的图片名称(" + iv.fileName + ")找不到文件!";
AddTxtLog(result);
Context.Response.Write(JsonHelper.ToJson(result));
return;
}
}
#endregion
}
else
{
result = "压缩包文件(" + absolutePath + ")不存在!";
AddTxtLog(result);
Context.Response.Write(JsonHelper.ToJson(result));
return;
}
}
当代码执行到“MD5Code = GetFileMD5(PicfolderName + "\" + iv.fileName);”这一句的时候会报错,我觉得是我的程序对文件流没控制好,还望大神们指教。谢谢!