public static bool CombineSlices(this HttpRequest httpRequest, string sliceSaveDir, string path, ref OperationResult result) { int count = int.Parse(httpRequest["sliceCount"]); string fileName = httpRequest["fileName"]; string locker = FileHelper.GetLocker(fileName); var slices = HttpPostedFileExt.GetAllSlicesPath(sliceSaveDir, fileName, count); lock (locker) { if (!HasSavedAllSlices(slices)) { result.SetMessage("Some slices have not uploaded completely!"); return(false); } FilesCombiner.Instance.Combine(slices, path, ref result); if (result.IsSucceeded) { FilesCombiner.Instance.DeleteSlices(slices, ref result); } return(result.IsSucceeded); } }
public static bool SaveAsSlice(this HttpRequest httpRequest, string saveDir, ref OperationResult result) { if (!httpRequest.IsValidSliceRequest(ref result)) { return(false); } int index = int.Parse(httpRequest["sliceIndex"]); string fileName = httpRequest["fileName"]; if (!httpRequest.Files[0].SaveAsSlice(saveDir, fileName, index, ref result)) { return(false); } string sliceChecksum = httpRequest["sliceChecksum"]; if (!string.IsNullOrWhiteSpace(sliceChecksum)) { if (!httpRequest.Files[0].VerifySlice(saveDir, fileName, index, sliceChecksum)) { result.SetErrorMessage(string.Format("MD5 value {0} for {1} is invalid.", sliceChecksum, fileName)); result.Data = new { NeedReUpload = true }; return(false); } } if (!HttpPostedFileExt.ChangeSliceName(saveDir, fileName, index, ref result)) { return(false); } return(true); }