public static ChunkedUploadSession UploadChunk(string uploadId, Stream stream, long chunkLength) { var uploadSession = ChunkedUploadSessionHolder.GetSession(uploadId); uploadSession.Expired = DateTime.UtcNow + ChunkedUploadSessionHolder.SlidingExpiration; if (chunkLength <= 0) { throw new Exception(FilesCommonResource.ErrorMassage_EmptyFile); } if (chunkLength > SetupInfo.MaxUploadSize) { throw FileSizeComment.GetFileSizeException(SetupInfo.MaxUploadSize); } if (uploadSession.BytesUploaded + chunkLength > GetMaxFileSize(uploadSession)) { AbortUpload(uploadSession); throw FileSizeComment.GetFileSizeException(GetMaxFileSize(uploadSession)); } using (var dao = Global.DaoFactory.GetFileDao()) { dao.UploadChunk(uploadSession, stream, chunkLength); } if (uploadSession.BytesUploaded == uploadSession.BytesTotal) { FileMarker.MarkAsNew(uploadSession.File); ChunkedUploadSessionHolder.RemoveSession(uploadSession); } return(uploadSession); }
public ChunkedUploadSession <T> UploadChunk <T>(string uploadId, Stream stream, long chunkLength) { var uploadSession = ChunkedUploadSessionHolder.GetSession <T>(uploadId); uploadSession.Expired = DateTime.UtcNow + ChunkedUploadSessionHolder.SlidingExpiration; if (chunkLength <= 0) { throw new Exception(FilesCommonResource.ErrorMassage_EmptyFile); } if (chunkLength > SetupInfo.ChunkUploadSize) { throw FileSizeComment.GetFileSizeException(SetupInfo.MaxUploadSize(TenantExtra, TenantStatisticsProvider)); } var maxUploadSize = GetMaxFileSize(uploadSession.FolderId, uploadSession.BytesTotal > 0); if (uploadSession.BytesUploaded + chunkLength > maxUploadSize) { AbortUpload(uploadSession); throw FileSizeComment.GetFileSizeException(maxUploadSize); } var dao = DaoFactory.GetFileDao <T>(); dao.UploadChunk(uploadSession, stream, chunkLength); if (uploadSession.BytesUploaded == uploadSession.BytesTotal) { var linkDao = DaoFactory.GetLinkDao(); linkDao.DeleteAllLink(uploadSession.File.ID.ToString()); FileMarker.MarkAsNew(uploadSession.File); ChunkedUploadSessionHolder.RemoveSession(uploadSession); } else { ChunkedUploadSessionHolder.StoreSession(uploadSession); } return(uploadSession); }
public static void AbortUpload(string uploadId) { AbortUpload(ChunkedUploadSessionHolder.GetSession(uploadId)); }
public void AbortUpload <T>(string uploadId) { AbortUpload(ChunkedUploadSessionHolder.GetSession <T>(uploadId)); }