电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开案例.WebApi.文件服务.附件下载

来源:金蝶云社区作者:金蝶2024-09-233

二开案例.WebApi.文件服务.附件下载

【应用场景】

WebApi,附件下载。



【案例演示】

使用WebApi接口,下载附件



【实现步骤】

<1>学习附件上传接口。

学习资料:【WebAPI附件上传下载接口】https://vip.kingdee.com/article/296577252589190400

接口名称:AttachmentDownLoad

请求Url:

http://[IP]/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.AttachmentDownLoad.common.kdsvc

请求数据包:

{
    "FileId": "914ad20995d34178b34ec264b23f5f52",
    "StartIndex": 0
}


响应数据包:

{
    "Result": {
        "ResponseStatus": {
            "IsSuccess": true,
            "Errors": [],
            "SuccessEntitys": [],
            "SuccessMessages": [],
            "MsgCode": 0
        },
        "StartIndex": 4194304,
        "IsLast": true,
        "FileSize": 3570547,
        "FileName": "8.webp",
        "FilePart": "iVBORwggg==",
        "Message": ""
    }
}


<2>编写附件上传的WebApi接口调用代码。

using Kingdee.BOS.WebApi.Client;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using System;
using System.IO;
namespace Jac.XkDemo.BOS.WebApiTests
{
    /// <summary>
    /// WebApi.文件服务.附件下载
    /// </summary>
    [TestClass]
    public class FileServiceDownloadTest
    {
        /// <summary>
        /// 附件下载
        /// </summary>
        [TestMethod]
        public void DownloadTest()
        {
            // 星空站点Url
            var webSite = "http://172.17.3.148/k3cloud/";
            // 数据中心ID(账套ID)
            var dbId = "6371de6bdb991c";
            // 登录账号          
            var userName = "demo";
            //第三方系统应用Id             
            var password = "888888";
            // 登录语言
            var lcId = 2052;
            // 登录
            var client = new K3CloudApiClient(webSite);
            var loginResult = client.Login(dbId, userName, password, lcId);
            if (!loginResult)
            {
                Assert.IsFalse(true);
                return;
            }
            // 下载附件
            var fileId = "914ad20995d34178b34ec264b23f5f52"; // SELECT * FROM T_BAS_FILESERVERFILEINFO WHERE FFILENAME='8.webp'
            var fileName = "8.webp";
            var filePath = @"C:\Users\Public\Pictures\Sample Pictures\test\8.webp";
            /*
{
"FileId": "914ad20995d34178b34ec264b23f5f52",
"StartIndex": 0
}
             */
            var dataObj = new
            {
                FileId = fileId,
                StartIndex = 0
            };
            var data = JsonConvert.SerializeObject(dataObj);
            //Console.WriteLine(data);
            var result = client.AttachmentDownLoad(data);
            Console.WriteLine(result);
            var responseDto = ResponseDto.Parse(result);
            Assert.IsTrue(responseDto != null);
            Assert.IsTrue(responseDto.Result != null);
            Assert.IsTrue(responseDto.Result.ResponseStatus != null);
            Assert.IsTrue(responseDto.Result.ResponseStatus.IsSuccess);
            Assert.IsTrue(!string.IsNullOrWhiteSpace(responseDto.Result.FilePart));
            if (responseDto.Result.IsLast)
            {
                // 文件较小,一次性下载完了,保存文件
                var fileBytes = Convert.FromBase64String(responseDto.Result.FilePart);
                File.WriteAllBytes(filePath, fileBytes);
                Assert.IsTrue(File.Exists(filePath));
            }
            else
            {
                // 文件太大,被分块下载,获取所有分块数据后,再保存文件
                var list = new System.Collections.Generic.List<byte>();
                var fileBytes = Convert.FromBase64String(responseDto.Result.FilePart);
                list.AddRange(fileBytes);
                while (!responseDto.Result.IsLast)
                {
                    // 循环下载,直到文件全部下载完
                    var dataObjNext = new
                    {
                        FileId = fileId,
                        StartIndex = responseDto.Result.StartIndex
                    };
                    data = JsonConvert.SerializeObject(dataObjNext);
                    result = client.AttachmentDownLoad(data);
                    Console.WriteLine(result);
                    responseDto = ResponseDto.Parse(result);
                    Assert.IsTrue(responseDto != null);
                    Assert.IsTrue(responseDto.Result != null);
                    Assert.IsTrue(responseDto.Result.ResponseStatus != null);
                    Assert.IsTrue(responseDto.Result.ResponseStatus.IsSuccess);
                    Assert.IsTrue(!string.IsNullOrWhiteSpace(responseDto.Result.FilePart));
                    fileBytes = Convert.FromBase64String(responseDto.Result.FilePart);
                    list.AddRange(fileBytes);
                }
                // 下载完了,保存文

二开案例.WebApi.文件服务.附件下载

【应用场景】WebApi,附件下载。【案例演示】使用WebApi接口,下载附件。【实现步骤】<1>学习附件上传接口。学习资料:【WebAPI附件上传下...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信