Exemplo n.º 1
0
            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
            });
        }
Exemplo n.º 3
0
        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);
        }