コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }