Example #1
0
        public ChunkedUploadSession CreateUploadSession(File file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
            {
                return new ChunkedUploadSession(RestoreIds(file), contentLength)
                       {
                           UseChunks = false
                       }
            }
            ;

            var uploadSession = new ChunkedUploadSession(file, contentLength);

            uploadSession.Items["TempPath"] = Path.GetTempFileName();

            uploadSession.File = RestoreIds(uploadSession.File);
            return(uploadSession);
        }
Example #2
0
        public void AbortUploadSession(ChunkedUploadSession uploadSession)
        {
            if (uploadSession.Items.ContainsKey("OneDriveSession"))
            {
                var oneDriveSession = uploadSession.GetItemOrDefault <ResumableUploadSession>("OneDriveSession");

                if (oneDriveSession.Status != ResumableUploadSessionStatus.Completed)
                {
                    OneDriveProviderInfo.Storage.CancelTransfer(oneDriveSession);

                    oneDriveSession.Status = ResumableUploadSessionStatus.Aborted;
                }
            }
            else if (uploadSession.Items.ContainsKey("TempPath"))
            {
                System.IO.File.Delete(uploadSession.GetItemOrDefault <string>("TempPath"));
            }
        }
Example #3
0
        public ChunkedUploadSession CreateUploadSession(File file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
            {
                return new ChunkedUploadSession(RestoreIds(file), contentLength)
                       {
                           UseChunks = false
                       }
            }
            ;

            var uploadSession = new ChunkedUploadSession(file, contentLength);

            Item onedriveFile;

            if (file.ID != null)
            {
                onedriveFile = GetOneDriveItem(file.ID);
            }
            else
            {
                var folder = GetOneDriveItem(file.FolderID);
                onedriveFile = new Item {
                    Name = file.Title, ParentReference = new ItemReference {
                        Id = folder.Id
                    }
                };
            }

            var onedriveSession = OneDriveProviderInfo.Storage.CreateResumableSession(onedriveFile, contentLength);

            if (onedriveSession != null)
            {
                uploadSession.Items["OneDriveSession"] = onedriveSession;
            }
            else
            {
                uploadSession.Items["TempPath"] = TempPath.GetTempFileName();
            }

            uploadSession.File = RestoreIds(uploadSession.File);
            return(uploadSession);
        }
Example #4
0
        public ChunkedUploadSession <string> CreateUploadSession(File <string> file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
            {
                return new ChunkedUploadSession <string>(MakeId(file), contentLength)
                       {
                           UseChunks = false
                       }
            }
            ;

            var uploadSession = new ChunkedUploadSession <string>(file, contentLength);

            var isNewFile = false;

            ICloudFileSystemEntry sharpboxFile;

            if (file.ID != null)
            {
                sharpboxFile = GetFileById(file.ID);
            }
            else
            {
                var folder = GetFolderById(file.FolderID);
                sharpboxFile = ProviderInfo.Storage.CreateFile(folder, GetAvailableTitle(file.Title, folder, IsExist));
                isNewFile    = true;
            }

            var sharpboxSession = sharpboxFile.GetDataTransferAccessor().CreateResumableSession(contentLength);

            if (sharpboxSession != null)
            {
                uploadSession.Items["SharpboxSession"] = sharpboxSession;
                uploadSession.Items["IsNewFile"]       = isNewFile;
            }
            else
            {
                uploadSession.Items["TempPath"] = Path.GetTempFileName();
            }

            uploadSession.File = MakeId(uploadSession.File);
            return(uploadSession);
        }
Example #5
0
        private File <string> FinalizeUploadSession(ChunkedUploadSession <string> uploadSession)
        {
            if (uploadSession.Items.ContainsKey("OneDriveSession"))
            {
                var oneDriveSession = uploadSession.GetItemOrDefault <ResumableUploadSession>("OneDriveSession");

                ProviderInfo.CacheReset(oneDriveSession.FileId);
                var parentDriveId = oneDriveSession.FolderId;
                if (parentDriveId != null)
                {
                    ProviderInfo.CacheReset(parentDriveId);
                }

                return(ToFile(GetOneDriveItem(oneDriveSession.FileId)));
            }

            using var fs = new FileStream(uploadSession.GetItemOrDefault <string>("TempPath"), FileMode.Open, FileAccess.Read, System.IO.FileShare.None, 4096, FileOptions.DeleteOnClose);
            return(SaveFile(uploadSession.File, fs));
        }
Example #6
0
        public void AbortUploadSession(ChunkedUploadSession <string> uploadSession)
        {
            if (uploadSession.Items.ContainsKey("SharpboxSession"))
            {
                var sharpboxSession =
                    uploadSession.GetItemOrDefault <AppLimit.CloudComputing.SharpBox.StorageProvider.BaseObjects.ResumableUploadSession>("SharpboxSession");

                var isNewFile    = uploadSession.Items.ContainsKey("IsNewFile") && uploadSession.GetItemOrDefault <bool>("IsNewFile");
                var sharpboxFile =
                    isNewFile
                        ? ProviderInfo.Storage.CreateFile(GetFolderById(sharpboxSession.ParentId), sharpboxSession.FileName)
                        : GetFileById(sharpboxSession.FileId);
                sharpboxFile.GetDataTransferAccessor().AbortResumableSession(sharpboxSession);
            }
            else if (uploadSession.Items.ContainsKey("TempPath"))
            {
                File.Delete(uploadSession.GetItemOrDefault <string>("TempPath"));
            }
        }
Example #7
0
        private File GetFileForCommit(ChunkedUploadSession uploadSession)
        {
            if (uploadSession.File.ID != null)
            {
                var file = GetFile(uploadSession.File.ID);
                file.Version++;
                file.ContentLength = uploadSession.BytesTotal;
                file.ConvertedType = null;
                file.Comment       = FilesCommonResource.CommentUpload;
                return(file);
            }

            return(new File
            {
                FolderID = uploadSession.File.FolderID,
                Title = uploadSession.File.Title,
                ContentLength = uploadSession.BytesTotal,
                Comment = FilesCommonResource.CommentUpload,
            });
        }
Example #8
0
        public ChunkedUploadSession CreateUploadSession(File file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
            {
                return new ChunkedUploadSession(file, contentLength)
                       {
                           UseChunks = false
                       }
            }
            ;

            var tempPath = Guid.NewGuid().ToString();
            var uploadId = Global.GetStore().InitiateChunkedUpload(FileConstant.StorageDomainTmp, tempPath);

            var uploadSession = new ChunkedUploadSession(file, contentLength);

            uploadSession.Items["TempPath"] = tempPath;
            uploadSession.Items["UploadId"] = uploadId;

            return(uploadSession);
        }
Example #9
0
        public File FinalizeUploadSession(ChunkedUploadSession uploadSession)
        {
            if (uploadSession.Items.ContainsKey("GoogleDriveSession"))
            {
                var googleDriveSession = uploadSession.GetItemOrDefault <ResumableUploadSession>("GoogleDriveSession");

                CacheReset(googleDriveSession.FileId);
                var parentDriveId = googleDriveSession.FolderId;
                if (parentDriveId != null)
                {
                    CacheReset(parentDriveId, false);
                }

                return(ToFile(GetDriveEntry(googleDriveSession.FileId)));
            }

            using (var fs = new FileStream(uploadSession.GetItemOrDefault <string>("TempPath"), FileMode.Open, FileAccess.Read, FileShare.None, 4096, FileOptions.DeleteOnClose))
            {
                return(SaveFile(uploadSession.File, fs));
            }
        }
Example #10
0
        public ChunkedUploadSession CreateUploadSession(File file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
            {
                return new ChunkedUploadSession(file, contentLength)
                       {
                           UseChunks = false
                       }
            }
            ;

            var tempPath = Path.GetRandomFileName();
            var uploadId = Global.GetStore().InitiateChunkedUpload(string.Empty, tempPath);

            var uploadSession = new ChunkedUploadSession(file, contentLength);

            uploadSession.Items["TempPath"] = tempPath;
            uploadSession.Items["UploadId"] = uploadId;

            return(uploadSession);
        }
Example #11
0
        public File UploadChunk(ChunkedUploadSession uploadSession, Stream stream, long chunkLength)
        {
            if (!uploadSession.UseChunks)
            {
                if (uploadSession.BytesTotal == 0)
                {
                    uploadSession.BytesTotal = chunkLength;
                }

                uploadSession.File          = SaveFile(uploadSession.File, stream);
                uploadSession.BytesUploaded = chunkLength;
                return(uploadSession.File);
            }

            if (uploadSession.Items.ContainsKey("OneDriveSession"))
            {
                var oneDriveSession = uploadSession.GetItemOrDefault <ResumableUploadSession>("OneDriveSession");
                OneDriveProviderInfo.Storage.Transfer(oneDriveSession, stream, chunkLength);
            }
            else
            {
                var tempPath = uploadSession.GetItemOrDefault <string>("TempPath");
                using (var fs = new FileStream(tempPath, FileMode.Append))
                {
                    stream.CopyTo(fs);
                }
            }

            uploadSession.BytesUploaded += chunkLength;

            if (uploadSession.BytesUploaded == uploadSession.BytesTotal)
            {
                uploadSession.File = FinalizeUploadSession(uploadSession);
            }
            else
            {
                uploadSession.File = RestoreIds(uploadSession.File);
            }
            return(uploadSession.File);
        }
        public void UploadChunk(ChunkedUploadSession uploadSession, Stream stream, long chunkLength)
        {
            if (!uploadSession.UseChunks)
            {
                if (uploadSession.BytesTotal == 0)
                {
                    uploadSession.BytesTotal = chunkLength;
                }

                uploadSession.File          = SaveFile(uploadSession.File, stream);
                uploadSession.BytesUploaded = chunkLength;
                return;
            }

            if (uploadSession.Items.ContainsKey("SharpboxSession"))
            {
                var sharpboxSession = uploadSession.GetItemOrDefault <IResumableUploadSession>("SharpboxSession");
                sharpboxSession.File.GetDataTransferAccessor().Transfer(sharpboxSession, stream, chunkLength);
            }
            else
            {
                var tempPath = uploadSession.GetItemOrDefault <string>("TempPath");
                using (var fs = new FileStream(tempPath, FileMode.Append))
                {
                    stream.CopyTo(fs);
                }
            }

            uploadSession.BytesUploaded += chunkLength;

            if (uploadSession.BytesUploaded == uploadSession.BytesTotal)
            {
                uploadSession.File = FinalizeUploadSession(uploadSession);
            }
            else
            {
                uploadSession.File = MakeId(uploadSession.File);
            }
        }
Example #13
0
        public void UploadChunk(ChunkedUploadSession uploadSession, Stream stream, long chunkLength)
        {
            if (!uploadSession.UseChunks)
            {
                using (var streamToSave = ChunkedUploadSessionHolder.UploadSingleChunk(uploadSession, stream, chunkLength))
                {
                    if (streamToSave != Stream.Null)
                    {
                        uploadSession.File = SaveFile(GetFileForCommit(uploadSession), streamToSave);
                    }
                }

                return;
            }

            ChunkedUploadSessionHolder.UploadChunk(uploadSession, stream, chunkLength);

            if (uploadSession.BytesUploaded == uploadSession.BytesTotal)
            {
                uploadSession.File = FinalizeUploadSession(uploadSession);
            }
        }
        public ChunkedUploadSession CreateUploadSession(File file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
            {
                return new ChunkedUploadSession(RestoreIds(file), contentLength)
                       {
                           UseChunks = false
                       }
            }
            ;

            var uploadSession = new ChunkedUploadSession(file, contentLength);

            DriveFile driveFile;

            if (file.ID != null)
            {
                driveFile = GetDriveEntry(file.ID);
            }
            else
            {
                var folder = GetDriveEntry(file.FolderID);
                driveFile = GoogleDriveProviderInfo.Storage.FileConstructor(file.Title, null, folder.Id);
            }

            var googleDriveSession = GoogleDriveProviderInfo.Storage.CreateResumableSession(driveFile, contentLength);

            if (googleDriveSession != null)
            {
                uploadSession.Items["GoogleDriveSession"] = googleDriveSession;
            }
            else
            {
                uploadSession.Items["TempPath"] = Path.GetTempFileName();
            }

            uploadSession.File = RestoreIds(uploadSession.File);
            return(uploadSession);
        }
Example #15
0
        public ChunkedUploadSession CreateUploadSession(Core.File file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
            {
                return new ChunkedUploadSession(MakeId(file), contentLength)
                       {
                           UseChunks = false
                       }
            }
            ;

            var uploadSession = new ChunkedUploadSession(file, contentLength);

            ICloudFileSystemEntry googleDriveFile;

            if (file.ID != null)
            {
                googleDriveFile = GetFileById(file.ID);
            }
            else
            {
                var folder = GetFolderById(file.FolderID);
                googleDriveFile = GoogleDriveProviderInfo.Storage.CreateFile(folder, GetAvailableTitle(file.Title, folder, IsExist));
            }

            var googleDriveSession = googleDriveFile.GetDataTransferAccessor().CreateResumableSession(contentLength);

            if (googleDriveSession != null)
            {
                uploadSession.Items["GoogleDriveSession"] = googleDriveSession;
            }
            else
            {
                uploadSession.Items["TempPath"] = Path.GetTempFileName();
            }

            uploadSession.File = MakeId(uploadSession.File);
            return(uploadSession);
        }
Example #16
0
        public File UploadChunk(ChunkedUploadSession uploadSession, Stream stream, long chunkLength)
        {
            if (!uploadSession.UseChunks)
            {
                if (uploadSession.BytesTotal == 0)
                {
                    uploadSession.BytesTotal = chunkLength;
                }

                uploadSession.File = SaveFile(uploadSession.File, stream);

                uploadSession.BytesUploaded = chunkLength;
                return(uploadSession.File);
            }

            var tempPath = uploadSession.GetItemOrDefault <string>("TempPath");

            using (var fs = new FileStream(tempPath, FileMode.Append))
            {
                stream.CopyTo(fs);
            }

            uploadSession.BytesUploaded += chunkLength;

            if (uploadSession.BytesUploaded == uploadSession.BytesTotal)
            {
                using (var fs = new FileStream(uploadSession.GetItemOrDefault <string>("TempPath"),
                                               FileMode.Open, FileAccess.Read, FileShare.None, 4096, FileOptions.DeleteOnClose))
                {
                    uploadSession.File = SaveFile(uploadSession.File, fs);
                }
            }
            else
            {
                uploadSession.File = RestoreIds(uploadSession.File);
            }
            return(uploadSession.File);
        }
Example #17
0
        public void UploadChunk(ChunkedUploadSession <string> uploadSession, Stream stream, long chunkLength)
        {
            if (!uploadSession.UseChunks)
            {
                if (uploadSession.BytesTotal == 0)
                {
                    uploadSession.BytesTotal = chunkLength;
                }

                uploadSession.File          = SaveFile(uploadSession.File, stream);
                uploadSession.BytesUploaded = chunkLength;
                return;
            }

            if (uploadSession.Items.ContainsKey("DropboxSession"))
            {
                var dropboxSession = uploadSession.GetItemOrDefault <string>("DropboxSession");
                ProviderInfo.Storage.Transfer(dropboxSession, uploadSession.BytesUploaded, stream);
            }
            else
            {
                var tempPath = uploadSession.GetItemOrDefault <string>("TempPath");
                using var fs = new FileStream(tempPath, FileMode.Append);
                stream.CopyTo(fs);
            }

            uploadSession.BytesUploaded += chunkLength;

            if (uploadSession.BytesUploaded == uploadSession.BytesTotal)
            {
                uploadSession.File = FinalizeUploadSession(uploadSession);
            }
            else
            {
                uploadSession.File = RestoreIds(uploadSession.File);
            }
        }
Example #18
0
        private void UploadSingleChunk(ChunkedUploadSession uploadSession, Stream stream, long chunkLength)
        {
            if (uploadSession.BytesTotal == 0)
            {
                uploadSession.BytesTotal = chunkLength;
            }

            if (uploadSession.BytesTotal == chunkLength)
            {
                uploadSession.File          = SaveFile(GetFileForCommit(uploadSession), stream);
                uploadSession.BytesUploaded = chunkLength;
            }
            else if (uploadSession.BytesTotal > chunkLength)
            {
                //This is hack fixing strange behaviour of plupload in flash mode.

                if (!uploadSession.Items.ContainsKey("ChunksBuffer"))
                {
                    uploadSession.Items["ChunksBuffer"] = Path.GetTempFileName();
                }

                using (var bufferStream = new FileStream(uploadSession.GetItemOrDefault <string>("ChunksBuffer"), FileMode.Append))
                {
                    stream.StreamCopyTo(bufferStream);
                }

                uploadSession.BytesUploaded += chunkLength;

                if (uploadSession.BytesTotal == uploadSession.BytesUploaded)
                {
                    using (var bufferStream = new FileStream(uploadSession.GetItemOrDefault <string>("ChunksBuffer"), FileMode.Open, FileAccess.Read, FileShare.None, 4096, FileOptions.DeleteOnClose))
                    {
                        uploadSession.File = SaveFile(GetFileForCommit(uploadSession), bufferStream);
                    }
                }
            }
        }
Example #19
0
        public ChunkedUploadSession CreateUploadSession(File file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
                return new ChunkedUploadSession(file, contentLength) { UseChunks = false };

            var tempPath = Guid.NewGuid().ToString();
            var uploadId = Global.GetStore().InitiateChunkedUpload(FileConstant.StorageDomainTmp, tempPath);

            var uploadSession = new ChunkedUploadSession(file, contentLength);
            uploadSession.Items["TempPath"] = tempPath;
            uploadSession.Items["UploadId"] = uploadId;

            return uploadSession;
        }
Example #20
0
 public static void AbortUploadSession(ChunkedUploadSession uploadSession)
 {
     CommonSessionHolder().Abort(uploadSession);
 }
Example #21
0
 private static long GetMaxFileSize(ChunkedUploadSession uploadSession)
 {
     return(GetMaxFileSize(uploadSession.BytesTotal > 0));
 }
 public static void RemoveSession(ChunkedUploadSession uploadSession)
 {
     HttpRuntime.Cache.Remove(uploadSession.Id);
 }
Example #23
0
        private File FinalizeUploadSession(ChunkedUploadSession uploadSession)
        {
            var tempPath = uploadSession.GetItemOrDefault<string>("TempPath");
            var uploadId = uploadSession.GetItemOrDefault<string>("UploadId");
            var eTags = uploadSession.GetItemOrDefault<List<string>>("ETag")
                                     .Select((x, i) => new KeyValuePair<int, string>(i + 1, x))
                                     .ToDictionary(x => x.Key, x => x.Value);

            Global.GetStore().FinalizeChunkedUpload(FileConstant.StorageDomainTmp, tempPath, uploadId, eTags);

            var file = GetFileForCommit(uploadSession);
            SaveFile(file, null);
            Global.GetStore().Move(FileConstant.StorageDomainTmp, tempPath, string.Empty, GetUniqFilePath(file));

            return file;
        }
Example #24
0
        private File GetFileForCommit(ChunkedUploadSession uploadSession)
        {
            if (uploadSession.File.ID != null)
            {
                var file = GetFile(uploadSession.File.ID);
                file.Version++;
                file.ContentLength = uploadSession.BytesTotal;
                file.Comment = string.Empty;
                return file;
            }

            return new File { FolderID = uploadSession.File.FolderID, Title = uploadSession.File.Title, ContentLength = uploadSession.BytesTotal };
        }
 public void AbortUploadSession <T>(ChunkedUploadSession <T> uploadSession)
 {
     CommonSessionHolder().Abort(uploadSession);
 }
 public Stream UploadSingleChunk <T>(ChunkedUploadSession <T> uploadSession, Stream stream, long chunkLength)
 {
     return(CommonSessionHolder().UploadSingleChunk(uploadSession, stream, chunkLength));
 }
 public void FinalizeUploadSession <T>(ChunkedUploadSession <T> uploadSession)
 {
     CommonSessionHolder().Finalize(uploadSession);
 }
 public void Move <T>(ChunkedUploadSession <T> chunkedUploadSession, string newPath)
 {
     CommonSessionHolder().Move(chunkedUploadSession, newPath);
 }
Example #29
0
 public static void RemoveSession(ChunkedUploadSession s)
 {
     Global.GetStore(false).Delete(FileConstant.StorageDomainTmp, Path.Combine("sessions", s.Id + ".session"));
 }
 private static object ToResponseObject(ChunkedUploadSession session)
 {
     return new
         {
             id = session.Id,
             created = session.Created,
             expired = session.Expired,
             location = session.Location,
             bytes_uploaded = session.BytesUploaded,
             bytes_total = session.BytesTotal
         };
 }
        public void UploadChunk(ChunkedUploadSession uploadSession, Stream stream, long chunkLength)
        {
            if (!uploadSession.UseChunks)
            {
                if (uploadSession.BytesTotal == 0)
                    uploadSession.BytesTotal = chunkLength;

                uploadSession.File = SaveFile(uploadSession.File, stream);
                uploadSession.BytesUploaded = chunkLength;
                return;
            }

            if (uploadSession.Items.ContainsKey("SharpboxSession"))
            {
                var sharpboxSession = uploadSession.GetItemOrDefault<IResumableUploadSession>("SharpboxSession");
                sharpboxSession.File.GetDataTransferAccessor().Transfer(sharpboxSession, stream, chunkLength);
            }
            else
            {
                var tempPath = uploadSession.GetItemOrDefault<string>("TempPath");
                using (var fs = new FileStream(tempPath, FileMode.Append))
                {
                    stream.CopyTo(fs);
                }
            }

            uploadSession.BytesUploaded += chunkLength;

            if (uploadSession.BytesUploaded == uploadSession.BytesTotal)
            {
                uploadSession.File = FinalizeUploadSession(uploadSession);
            }
            else
            {
                uploadSession.File = MakeId(uploadSession.File);
            }
        }
Example #32
0
        public void UploadChunk(ChunkedUploadSession uploadSession, Stream stream, long chunkLength)
        {
            if (!uploadSession.UseChunks)
            {
                UploadSingleChunk(uploadSession, stream, chunkLength);
                return;
            }

            var tempPath = uploadSession.GetItemOrDefault<string>("TempPath");
            var uploadId = uploadSession.GetItemOrDefault<string>("UploadId");
            var chunkNumber = uploadSession.GetItemOrDefault<int>("ChunksUploaded") + 1;

            var eTag = Global.GetStore().UploadChunk(FileConstant.StorageDomainTmp, tempPath, uploadId, stream, chunkNumber, chunkLength);

            var eTags = uploadSession.GetItemOrDefault<List<string>>("ETag") ?? new List<string>();
            eTags.Add(eTag);

            uploadSession.Items["ChunksUploaded"] = chunkNumber;
            uploadSession.Items["ETag"] = eTags;
            uploadSession.BytesUploaded += chunkLength;

            if (uploadSession.BytesUploaded == uploadSession.BytesTotal)
            {
                uploadSession.File = FinalizeUploadSession(uploadSession);
            }
        }
        public ChunkedUploadSession CreateUploadSession(Files.Core.File file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
                return new ChunkedUploadSession(MakeId(file), contentLength) { UseChunks = false };

            var uploadSession = new ChunkedUploadSession(file, contentLength);

            ICloudFileSystemEntry sharpboxFile;
            if (file.ID != null)
            {
                sharpboxFile = GetFileById(file.ID);
            }
            else
            {
                var folder = GetFolderById(file.FolderID);
                sharpboxFile = SharpBoxProviderInfo.Storage.CreateFile(folder, GetAvailableTitle(file.Title, folder, IsExist));
            }

            var sharpboxSession = sharpboxFile.GetDataTransferAccessor().CreateResumableSession(contentLength);
            if (sharpboxSession != null)
            {
                uploadSession.Items["SharpboxSession"] = sharpboxSession;
            }
            else
            {
                uploadSession.Items["TempPath"] = Path.GetTempFileName();
            }

            uploadSession.File = MakeId(uploadSession.File);
            return uploadSession;
        }
Example #34
0
        private void UploadSingleChunk(ChunkedUploadSession uploadSession, Stream stream, long chunkLength)
        {
            if (uploadSession.BytesTotal == 0)
                uploadSession.BytesTotal = chunkLength;

            if (uploadSession.BytesTotal == chunkLength)
            {
                uploadSession.File = SaveFile(GetFileForCommit(uploadSession), stream);
                uploadSession.BytesUploaded = chunkLength;
            }
            else if (uploadSession.BytesTotal > chunkLength)
            {
                //This is hack fixing strange behaviour of plupload in flash mode.

                if (!uploadSession.Items.ContainsKey("ChunksBuffer"))
                    uploadSession.Items["ChunksBuffer"] = Path.GetTempFileName();

                using (var bufferStream = new FileStream(uploadSession.GetItemOrDefault<string>("ChunksBuffer"), FileMode.Append))
                {
                    stream.StreamCopyTo(bufferStream);
                }

                uploadSession.BytesUploaded += chunkLength;

                if (uploadSession.BytesTotal == uploadSession.BytesUploaded)
                {
                    using (var bufferStream = new FileStream(uploadSession.GetItemOrDefault<string>("ChunksBuffer"), FileMode.Open, FileAccess.Read, FileShare.None, 4096, FileOptions.DeleteOnClose))
                    {
                        uploadSession.File = SaveFile(GetFileForCommit(uploadSession), bufferStream);
                    }
                }
            }
        }
Example #35
0
 private static long GetMaxFileSize(ChunkedUploadSession uploadSession)
 {
     return GetMaxFileSize(uploadSession.BytesTotal > 0);
 }
Example #36
0
 public void AbortUploadSession(ChunkedUploadSession uploadSession)
 {
     if (uploadSession.UseChunks)
     {
         var tempPath = uploadSession.GetItemOrDefault<string>("TempPath");
         var uploadId = uploadSession.GetItemOrDefault<string>("UploadId");
         Global.GetStore().AbortChunkedUpload(FileConstant.StorageDomainTmp, tempPath, uploadId);
     }
     else if (uploadSession.Items.ContainsKey("ChunksBuffer"))
     {
         System.IO.File.Delete(uploadSession.GetItemOrDefault<string>("ChunksBuffer"));
     }
 }
        public File FinalizeUploadSession(ChunkedUploadSession uploadSession)
        {
            if (uploadSession.Items.ContainsKey("GoogleDriveSession"))
            {
                var googleDriveSession = uploadSession.GetItemOrDefault<ResumableUploadSession>("GoogleDriveSession");

                CacheInsert(googleDriveSession.File);
                var parentDriveId = GetParentDriveId(googleDriveSession.File);
                if (parentDriveId != null) CacheReset(parentDriveId, false);

                return ToFile(googleDriveSession.File);
            }

            using (var fs = new FileStream(uploadSession.GetItemOrDefault<string>("TempPath"), FileMode.Open, FileAccess.Read, FileShare.None, 4096, FileOptions.DeleteOnClose))
            {
                return SaveFile(uploadSession.File, fs);
            }
        }
Example #38
0
        private static void AbortUpload(ChunkedUploadSession uploadSession)
        {
            using (var dao = Global.DaoFactory.GetFileDao())
            {
                dao.AbortUploadSession(uploadSession);
            }

            ChunkedUploadSessionHolder.RemoveSession(uploadSession);
        }
        public static object ToResponseObject(ChunkedUploadSession session, bool initiate = false)
        {
            var pathFolder = initiate ? EntryManager.GetBreadCrumbs(session.FolderId).Select(f => f.ID) : new List<object> {session.FolderId};

            return new
                {
                    id = session.Id,
                    path = pathFolder,
                    created = session.Created,
                    expired = session.Expired,
                    location = session.Location,
                    bytes_uploaded = session.BytesUploaded,
                    bytes_total = session.BytesTotal
                };
        }
 public static void StoreSession(ChunkedUploadSession uploadSession)
 {
     HttpRuntime.Cache.Insert(uploadSession.Id, uploadSession, null, AbsoluteExpiration, SlidingExpiration, OnCacheItemRemoved);
 }
        public void UploadChunk(ChunkedUploadSession uploadSession, Stream chunkStream, long chunkLength)
        {
            if (!uploadSession.UseChunks)
            {
                if (uploadSession.BytesTotal == 0)
                    uploadSession.BytesTotal = chunkLength;

                uploadSession.File = SaveFile(uploadSession.File, chunkStream);
                uploadSession.BytesUploaded = chunkLength;
                return;
            }

            throw new NotImplementedException();
        }
 public void AbortUploadSession(ChunkedUploadSession uploadSession)
 {
     //throw new NotImplementedException();
 }
 public void AbortUploadSession(ChunkedUploadSession uploadSession)
 {
     //throw new NotImplementedException();
 }
        public void AbortUploadSession(ChunkedUploadSession uploadSession)
        {
            if (uploadSession.Items.ContainsKey("GoogleDriveSession"))
            {
                var googleDriveSession = uploadSession.GetItemOrDefault<ResumableUploadSession>("GoogleDriveSession");

                if (googleDriveSession.Status != ResumableUploadSessionStatus.Completed)
                {
                    googleDriveSession.Status = ResumableUploadSessionStatus.Aborted;
                }
            }
            else if (uploadSession.Items.ContainsKey("TempPath"))
            {
                System.IO.File.Delete(uploadSession.GetItemOrDefault<string>("TempPath"));
            }
        }
Example #45
0
        public ChunkedUploadSession CreateUploadSession(File file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
                return new ChunkedUploadSession(file, contentLength) { UseChunks = false };

            var tempPath = Path.GetRandomFileName();
            var uploadId = Global.GetStore().InitiateChunkedUpload(string.Empty, tempPath);

            var uploadSession = new ChunkedUploadSession(file, contentLength);
            uploadSession.Items["TempPath"] = tempPath;
            uploadSession.Items["UploadId"] = uploadId;

            return uploadSession;
        }
Example #46
0
 public void UploadChunk(ChunkedUploadSession uploadSession, Stream chunkStream, long chunkLength)
 {
     var dao = GetFileDao(uploadSession.File);
     uploadSession.File = ConvertId(uploadSession.File);
     dao.UploadChunk(uploadSession, chunkStream, chunkLength);
 }
 public void AbortUploadSession(ChunkedUploadSession uploadSession)
 {
     if (uploadSession.Items.ContainsKey("SharpboxSession"))
     {
         var sharpboxSession = uploadSession.GetItemOrDefault<IResumableUploadSession>("SharpboxSession");
         sharpboxSession.File.GetDataTransferAccessor().AbortResumableSession(sharpboxSession);
     }
     else if (uploadSession.Items.ContainsKey("TempPath"))
     {
         System.IO.File.Delete(uploadSession.GetItemOrDefault<string>("TempPath"));
     }
 }
Example #48
0
 public void AbortUploadSession(ChunkedUploadSession uploadSession)
 {
     var dao = GetFileDao(uploadSession.File);
     uploadSession.File = ConvertId(uploadSession.File);
     dao.AbortUploadSession(uploadSession);
 }
        public Files.Core.File FinalizeUploadSession(ChunkedUploadSession uploadSession)
        {
            if (uploadSession.Items.ContainsKey("SharpboxSession"))
            {
                var sharpboxSession = uploadSession.GetItemOrDefault<IResumableUploadSession>("SharpboxSession");
                return ToFile(sharpboxSession.File);
            }

            using (var fs = new FileStream(uploadSession.GetItemOrDefault<string>("TempPath"), FileMode.Open, FileAccess.Read, FileShare.None, 4096, FileOptions.DeleteOnClose))
            {
                return SaveFile(uploadSession.File, fs);
            }
        }
        public ChunkedUploadSession CreateUploadSession(File file, long contentLength)
        {
            if (SetupInfo.ChunkUploadSize > contentLength)
                return new ChunkedUploadSession(RestoreIds(file), contentLength) { UseChunks = false };

            var uploadSession = new ChunkedUploadSession(file, contentLength);

            Google.Apis.Drive.v2.Data.File driveFile;
            if (file.ID != null)
            {
                driveFile = GetDriveEntry(file.ID);
            }
            else
            {
                var folder = GetDriveEntry(file.FolderID);
                driveFile = GoogleDriveProviderInfo.Storage.FileConstructor(file.Title, null, folder.Id);
            }

            var googleDriveSession = GoogleDriveProviderInfo.Storage.CreateResumableSession(driveFile, contentLength);
            if (googleDriveSession != null)
            {
                uploadSession.Items["GoogleDriveSession"] = googleDriveSession;
            }
            else
            {
                uploadSession.Items["TempPath"] = Path.GetTempFileName();
            }

            uploadSession.File = RestoreIds(uploadSession.File);
            return uploadSession;
        }
 public void UploadChunk <T>(ChunkedUploadSession <T> uploadSession, Stream stream, long length)
 {
     CommonSessionHolder().UploadChunk(uploadSession, stream, length);
 }
 public void StoreSession <T>(ChunkedUploadSession <T> s)
 {
     CommonSessionHolder(false).Store(s);
 }
        public void UploadChunk(ChunkedUploadSession uploadSession, Stream stream, long chunkLength)
        {
            if (!uploadSession.UseChunks)
            {
                if (uploadSession.BytesTotal == 0)
                    uploadSession.BytesTotal = chunkLength;

                uploadSession.File = SaveFile(uploadSession.File, stream);
                uploadSession.BytesUploaded = chunkLength;
                return;
            }

            if (uploadSession.Items.ContainsKey("GoogleDriveSession"))
            {
                var googleDriveSession = uploadSession.GetItemOrDefault<ResumableUploadSession>("GoogleDriveSession");
                GoogleDriveProviderInfo.Storage.Transfer(googleDriveSession, stream, chunkLength);
            }
            else
            {
                var tempPath = uploadSession.GetItemOrDefault<string>("TempPath");
                using (var fs = new FileStream(tempPath, FileMode.Append))
                {
                    stream.CopyTo(fs);
                }
            }

            uploadSession.BytesUploaded += chunkLength;

            if (uploadSession.BytesUploaded == uploadSession.BytesTotal)
            {
                uploadSession.File = FinalizeUploadSession(uploadSession);
            }
            else
            {
                uploadSession.File = RestoreIds(uploadSession.File);
            }
        }
Example #54
0
 public void AbortUploadSession(ChunkedUploadSession uploadSession)
 {
     ChunkedUploadSessionHolder.AbortUploadSession(uploadSession);
 }
 public void RemoveSession <T>(ChunkedUploadSession <T> s)
 {
     CommonSessionHolder(false).Remove(s);
 }