二开案例.WebApi.文件服务.附件上传

【应用场景】
WebApi,附件上传。
【案例演示】
采购订单,使用WebApi接口,上传单据头附件。
【准备工作】
新建一张采购订单,如下图。

【实现步骤】
<1>学习附件上传接口。
学习资料:【WebAPI附件上传下载接口】https://vip.kingdee.com/article/296577252589190400
接口名称:AttachmentUpload
请求Url:
http://[IP]/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.AttachmentUpLoad.common.kdsvc
请求数据包:
{
"FileName": "8.webp",
"FormId": "PUR_PurchaseOrder",
"IsLast": "true",
"InterId": "107361",
"BillNo": "CGDD001939",
"AliasFileName": "8.webp",
"FileId": "914ad20995d34178b34ec264b23f5f52",
"SendByte": "iVBORw0KGgrkJggg=="
}响应数据包:
{
"Result": {
"ResponseStatus": {
"IsSuccess": true,
"Errors": [],
"SuccessEntitys": [{
"Id": 692162,
"Number": null,
"DIndex": 0
}],
"SuccessMessages": [],
"MsgCode": 0
},
"FileId": "1ce11300f61444ef929f6d2edf281f31",
"Message": ""
}
}<2>编写附件上传的WebApi接口调用代码,本案例提供了附件上传(小于6M的文件)和附件分块上传两种(大于6M的文件)使用场景,如下。
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 FileServiceUploadTest
{
/// <summary>
/// 附件上传(小于6M的文件可用)
/// </summary>
[TestMethod]
public void UploadTest()
{
// 星空站点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 formId = "PUR_PurchaseOrder";
var billNo = "CGDD001939";
var id = "107361"; // SELECT * FROM T_PUR_POORDER WHERE FBILLNO='CGDD001939'
var fileName = "8.webp";
var filePath = @"C:\Users\Public\Pictures\Sample Pictures\8.webp";
var fileBytes = File.ReadAllBytes(filePath);
var fileBase64String = Convert.ToBase64String(fileBytes);
/*
{
"FileName": "8.webp",
"FormId": "PUR_PurchaseOrder",
"IsLast": "true",
"InterId": "107361",
"BillNo": "CGDD001939",
"AliasFileName": "8.webp",
"FileId": "914ad20995d34178b34ec264b23f5f52",
"SendByte": "iVBORw0KGgrkJggg=="
}
*/
var dataObj = new
{
FileName = fileName,
FormId = formId,
IsLast = "true",
InterId = id, // SELECT * FROM T_PUR_POORDER WHERE FBILLNO='CGDD001939'
BillNo = billNo,
AliasFileName = fileName,
SendByte = fileBase64String
};
var data = JsonConvert.SerializeObject(dataObj);
//Console.WriteLine(data);
var result = client.AttachmentUpload(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.FileId));
Console.WriteLine(responseDto.Result.FileId);
}
/// <summary>
/// 附件分块上传(大于6M的文件可用)
/// </summary>
[TestMethod]
public void BlockUploadTest()
{
// 星空站点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 formId = "PUR_PurchaseOrder";
var billNo = "CGDD001939";
var id = "107361"; // SELECT * FROM T_PUR_POORDER WHERE FBILLNO='CGDD001939'
var fileName = "6.webp";
var filePath = @"C:\Users\Public\Pictures\Sample Pictures\6.webp";
var blockSize = 1024 * 1024; // 分块大小:1M
var fileId = string.Empty;
using (var fsRead = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
if (fsRead.Length <= 0)
{
throw new Exception("文件内容不允许为空。");
}
while (true)
{
// 放里面声明,第一次填入完整字节数据,第二次若只填充一部分,此时后面的直接数组并不会被清空。
var content = new byte[blockSize];
int size = fsRead.Read(content, 0, content.Length);
if (size == 0)
{
break;
}
var isLast = (size != blockSize);
var uploadBytes = new byte[size];
Array.Copy(content, uploadBytes, size);
var fileBase64String = Convert.ToBase64String(uploadBytes);
/*
{
"FileName": "8.webp",
"FormId": "PUR_PurchaseOrder",
"IsLast": "true",
"InterId": "107361",
"BillNo": "CGDD001939",
"AliasFileName": "8.webp",
"FileId": "914ad20995d34178b34ec264b23f5f52",
"SendByte": "iVBORw0KGgrkJggg=="
}
*/
var dataObj = new
{
二开案例.WebApi.文件服务.附件上传
【应用场景】WebApi,附件上传。【案例演示】采购订单,使用WebApi接口,上传单据头附件。【准备工作】新建一张采购订单,如下图。【实现步...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



