public async Task <Result <BeginUploadResponse> > BeginUpload(BeginUploadRequest request) { const string api = "api/Factory/BeginUpload"; var response = await _owner.PostAsync <BeginUploadRequest, BeginUploadResponse>(api, request); return(response); }
public BeginUploadResponse BeginUpload(BeginUploadRequest request) { var cache = ServiceHelper.Cache; var uploadOptions = request.Options; if (uploadOptions == null) { uploadOptions = new UploadDocumentOptions(); } if (string.IsNullOrEmpty(uploadOptions.DocumentId) && !string.IsNullOrEmpty(request.DocumentId)) { uploadOptions.DocumentId = request.DocumentId; } uploadOptions.Cache = cache; Uri uploadUri = DocumentFactory.BeginUpload(uploadOptions); return(new BeginUploadResponse { UploadUri = uploadUri }); }
public async Task <ResponseMessage <string> > UploadFileToDocAsync(int appID, long libraryID, string filePath) { var headers = GetHeaders(); var fileName = System.IO.Path.GetFileName(filePath) + ""; var fileNameWithoutExt = System.IO.Path.GetFileNameWithoutExtension(filePath) + ""; var fileBytes = File.ReadAllBytes(filePath); var md5 = AkmiiHelper.GetMD5HashFromByte(fileBytes); var fileKey = Guid.NewGuid().ToString("N"); //1.begin #region begin upload var beginReq = new BeginUploadRequest { MD5 = md5, FileName = fileName, Length = fileBytes.Length, FileExtension = (System.IO.Path.GetExtension(filePath) + "").ToLower().Substring(1), ChunkSize = 1, AppID = appID, }; var beginResult = await GetResponseAsync <ResponseMessage <BeginUploadResponse> >(new AkmiiApiUrl { Method = "POST", Url = _context.DomainUrl + "/YeeOfficeDocument_Net/_API/Ver(3.0)/api/file/upload/begin" }, beginReq.Convert2Json()); if (beginResult.Data == null) { throw new Exception($"begin upload Status:{beginResult.Status},message:{beginResult.Message},data:{beginResult.Data}"); } #endregion //2.upload file,Ready 、Success #region upload file if (beginResult.Data.Progress == "Ready") { var fileId = beginResult.Data.FileID; //YeeOfficeDocument_Net/_API/Ver(3.0)//api/Library/code?Code=flowcraft-file&AppID=41 var uploadUrl = _context.DomainUrl + "/YeeOfficeDocument_Net/_API/Ver(3.0)/api/file/upload/small?fileID=" + fileId; var fileList = new List <HttpHelper.UploadFileModel> { new HttpHelper.UploadFileModel { FileName = fileName, Bytes = fileBytes, FileKeyName = fileKey } }; var uploadResponse = await HttpHelper.PostMultiFileAsync(uploadUrl, fileList, headers); var uploadResult = JsonHelper.DeserializeJsonTo <ResponseMessage <string> >(uploadResponse); if (uploadResult.Status != 0) { throw new Exception($"upload small Status:{uploadResult.Status},message:{uploadResult.Message},data:{uploadResult.Data}"); } } #endregion #region doc add var docAddRequest = new DocumentAddRequest { AppID = appID, LibraryID = libraryID + "", Name = fileKey, MD5 = md5, ContentLength = beginReq.Length, Extension = beginReq.FileExtension, OverWrite = true, }; var docAddResult = await GetResponseAsync <ResponseMessage <string> >(new AkmiiApiUrl { Method = "POST", Url = _context.DomainUrl + "/YeeOfficeDocument_Net/_API/Ver(3.0)//api/document", }, docAddRequest.Convert2Json()); #endregion if (docAddResult.Status != 0) { throw new Exception($"upload small Status:{docAddResult.Status},message:{docAddResult.Message},data:{docAddResult.Data}"); } var fileUrl = _context.DomainUrl + "/YeeOfficeDocument_Net/_API/Ver(3.0)/" + docAddResult.Data + "&name=" + HttpUtility.UrlEncode(fileNameWithoutExt); var akFileInfo = AkmiiFileInfo.GetAkmiiFileInfo(fileKey, fileName, beginReq.Length, fileUrl); docAddResult.Data = akFileInfo.ToString(); return(docAddResult); }