Fx.file:处理和文件有关的API
1. watermark 给图片加水印,仅纷享云使用且不能是企信中的文件(该操作会修改原文件,对老文件有缓存可能不能立即生效)
Fx.file.watermark(<String nPath>, <List words>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
nPath | String | 图片的npath |
words | List | 水印的内容列表 |
返回值类型
APIResult
返回值说明
返回的数据类型: Map
Java举例
APIResult ret = Fx.file.watermark("N_202003_04_c706c31390b747408bfb5eef3b031f34",Lists.newArrayList("test123","tyrdyz")); //文件的npath可以通过find函数查出
Groovy举例
def ret = Fx.file.watermark("N_202003_04_c706c31390b747408bfb5eef3b031f34",["test123","tyrdyz"]) //文件的npath可以通过find函数查出
2. uploadFile 文件上传
Fx.file.uploadFile(<String extensionName>, <Integer fileSize>, <byte[] fileBytes>, <Integer userId>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
extensionName | String | 文件扩展名 |
fileSize | Integer | 文件大小 |
fileBytes | byte[] | 文件内容byte数组 |
userId | Integer | 可选参数,上传人id |
返回值类型
APIResult
返回值说明
返回的数据类型: Map
Java举例
String text = "aaa";
byte[] byteData = Strings.toUTF8Bytes(text);
APIResult ret = Fx.file.uploadFile(".txt", byteData.length, byteData, 1000);
Groovy举例
def text = "aaa" as String
def byteData = Strings.toUTF8Bytes(text)
def ret = Fx.file.uploadFile(".txt", byteData.size(), byteData, 1000)
3. uploadFileByStream 把外部接口的文件上传
Fx.file.uploadFileByStream(<Request request>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
request | Request | 网络请求Request |
返回值类型
APIResult
返回值说明
返回的数据类型: APIResult
Java举例
Request request = Request.builder()
.method("POST")
.url('http://httpbin.org/post')
.timeout(7000)
.retryCount(3)
.body(body)
.build()
APIResult ret = Fx.getFile().uploadFileByStream(request)
Groovy举例
//构造Request请求
Request request = Request.builder()
.method("POST")
.url('http://httpbin.org/post')
.timeout(7000)
.retryCount(3)
.body(body)
.build()
def ret = Fx.file.uploadFileByStream(request)
注意事项
- 如果对方返回header中包含Content-Length,包含文件的大小,通过文件流处理不会进行文件大小校验;如果不包含则会校验文件大小,不可超过5m
4. downloadFile 文件下载返回byte[]
Fx.file.downloadFile(<String nPath>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
nPath | String | 文件的nPath |
返回值类型
APIResult
返回值说明
返回的数据类型: FileDownloadData
Java举例
APIResult ret = Fx.getFile().downloadFile("N_202007_12_001731386ccf40698523c39744b0161c");
FileDownloadData fileDowloadData = (FileDownloadData)ret.getData();
byte[] fileData = fileDowloadData.getFileData();
String str = Strings.toUTF8String(fileData);
Groovy举例
def ret = Fx.file.downloadFile("N_202007_12_001731386ccf40698523c39744b0161c")
def fileDowloadData = ret[1]
def fileData = fileDowloadData['fileData'] as byte[]
def str = Strings.toUTF8String(fileData) as String
(1).参考FileDownloadData
注意事项
- 下载文件有10m限制
5. downloadStream 文件下载返回InputStream
Fx.file.downloadStream(<String nPath>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
nPath | String | 文件的nPath |
返回值类型
APIResult
返回值说明
返回的数据类型: FileDownloadData
Java举例
APIResult ret = Fx.getFile().downloadFile("N_202111_29_6eb71dca766944c582b87e6a5213f3a3.docx");
FileDownloadData fileData = (FileDownloadData)ret.getData();
InputStream inputStream = fileData.getInputStream()
Groovy举例
def(Boolean err, Object fileData, String msg) = Fx.file.downloadStream("N_202111_29_6eb71dca766944c582b87e6a5213f3a3.docx")
if (err) {
log.info("downloadStream error :" + msg)
} else {
log.info("file data :" + fileData)
}
InputStream inputStream = fileData['inputStream'] as InputStream
log.info(fileData)
(1).参考FileDownloadData
6. packedFile 文件打包发送给指定用户
Fx.file.packedFile(<List files>, <List userIds>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
files | List | 构建文件的列表 |
userIds | List | 一步打包成功后,给人员提醒 |
返回值类型
APIResult
返回值说明
返回的数据类型: Map
Java举例
//定义需要打包发送的文件,参数分别为:打包后的文件名、对象下的文件路径(通过find函数可查询到)、文件后缀、文件打包后的包内存放路径
UserFile file = UserFile.of("文件1", "N_201907_31_57a33fb0c999447bb93fa1e4cc6e649d", "jpg", "/image");
List packFileList = Lists.newArrayList(file);
//把fileList中的文件打包后,通过人员id参数发送给指定人
final APIResult result = Fx.file.packedFile(packFileList, ["1000"]);
Groovy举例
//定义需要打包发送的文件,参数分别为:打包后的文件名、对象下的文件路径(通过find函数可查询到)、文件后缀、文件打包后的包内存放路径
UserFile file = UserFile.of("文件1","N_201907_31_57a33fb0c999447bb93fa1e4cc6e649d","jpg","/image")
List packFileList = []
packFileList.add(file)
//把fileList中的文件打包后,通过人员id参数发送给指定人
final APIResult result = Fx.file.packedFile(packFileList, Lists.newArrayList("1000"));
7. createFileShareTokens 无权限文件下载,获取文件下载token
Fx.file.createFileShareTokens(<Integer expireMinute>, <List pathList>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
expireMinute | Integer | 过期时间,单位分钟,最大支持15分钟 |
pathList | List | 文件nPath列表 |
返回值类型
APIResult
返回值说明
返回的数据类型: Map
Java举例
//获取无权限文件的shareToken
List paths = Lists.newArrayList("N_202102_03_54c5ede542154b748c6f9381d96a1956");
//获取无权限文件的shareToken
APIResult ret = Fx.file.createFileShareTokens(5, paths);
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
//获取到shareToken后用下列链接下载文件:
////www.sxgtbz.com/FSC/N/FileShare/DownloadFileBySharedTokenV2?sharedToken=6AA905C78D85C91D796261356AF7467E53719536C4515B3328F7D65FC8476DC777DE783881DF4588EB6B9F0AEEF0F46060EA5D49185941B59C4531F5967FA07B7424EDF8BF20F11F6AE89573CF7F96735EC0284E1F637AE3&name=111.jpg
Groovy举例
//获取无权限文件的shareToken
List paths = ['N_202102_03_54c5ede542154b748c6f9381d96a1956']
//获取无权限文件的shareToken
def(boolean error, Map data, String errorMessage) = Fx.file.createFileShareTokens(5, paths)
if (error) {
log.info(errorMessage)
} else {
log.info(data)
}
//获取到shareToken后用下列链接下载文件:
////www.sxgtbz.com/FSC/N/FileShare/DownloadFileBySharedTokenV2?sharedToken=6AA905C78D85C91D796261356AF7467E53719536C4515B3328F7D65FC8476DC777DE783881DF4588EB6B9F0AEEF0F46060EA5D49185941B59C4531F5967FA07B7424EDF8BF20F11F6AE89573CF7F96735EC0284E1F637AE3&name=111.jpg
8. getPresignedUrl 获取附件预签名url(仅文件专属企业可用)
Fx.file.getPresignedUrl(<List paths>, <Integer expire>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
paths | List | 文件npath集合 |
expire | Integer | url有效期(单位:秒) |
返回值类型
APIResult
返回值说明
返回的数据类型: List
Java举例
List<String>npaths = Lists.newArrayList("N_202207_06_2b51df0dd11043ee9c0ad341742f95bb");
int expire = 100;
APIResult ret = Fx.file.getPresignedUrl(npaths, expire);
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
Groovy举例
List npaths = ["N_202207_06_2b51df0dd11043ee9c0ad341742f95bb"]
int expire = 100
def(boolean error, List data, String message) = Fx.file.getPresignedUrl(npaths, expire)
if (error) {
log.info("error: " + message)
} else {
log.info(data)
}
9. convertPath 转换为无权限npath
Fx.file.convertPath(<String path>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
path | String | 文件npath |
返回值类型
APIResult
返回值说明
返回的数据类型: Map
Java举例
APIResult ret = Fx.file.convertPath("N_202208_01_3628e0ba470b4086aa04dd8f3e93ed5a")
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
Groovy举例
def (Boolean error, Map data, String message) = Fx.file.convertPath("N_202208_01_3628e0ba470b4086aa04dd8f3e93ed5a")
if (error) {
log.info("error :" + message)
} else {
log.info(data)
}
10. wordToPdf 将纷享上的word文件转成pdf
Fx.file.wordToPdf(<String npath>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
npath | String | 文件npath |
返回值类型
APIResult
返回值说明
返回的数据类型: Map
Java举例
APIResult ret = Fx.file.wordToPdf("N_202303_08_e11c1c5bb1c0486d83c5a6ece65a902f.docx")
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
Groovy举例
// 文件的NPath需要加上后缀名,新板文件NPath都是自带后缀的就不要再补了,老的NPath不带后缀名,需要拼上后缀
def (Boolean error, Map data, String message) = Fx.file.wordToPdf("N_202303_08_e11c1c5bb1c0486d83c5a6ece65a902f.docx")
if (error) {
log.info("error :" + message)
} else {
log.info(data)
}
11. getPdfMetaInfo 获取PDF文件的页码
Fx.file.getPdfMetaInfo(<String npath>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
npath | String | 文件npath |
返回值类型
APIResult
返回值说明
返回的数据类型: Map
Java举例
String npath = "N_202211_22_42918a541aed45038f3ab7cfdfb99aeb.pdf";
APIResult ret = Fx.file.getPdfMetaInfo(npath);
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
Groovy举例
String npath ="N_202211_22_42918a541aed45038f3ab7cfdfb99aeb.pdf";
def(boolean error, Map data, String message) = Fx.file.getPdfMetaInfo(npath);
Integer pageCount = 0
if(error){
log.info("error:"+message);
}else{
log.info("PDF文档信息:"+data);
pageCount = (Integer) data.pageCount;
log.info("PDF文档页码:" + pageCount);
}
12. mergerPdf 按集合的顺序追加合并PDF
Fx.file.mergerPdf(<List npaths>, <String documentType>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
npaths | List | 要合并的文件npaths |
documentType | String | 要合并的文件类型后缀(不加.) |
返回值类型
APIResult
返回值说明
返回的数据类型: Map
Java举例
List<String>npaths = Lists.newArrayList(
"N_202211_22_42918a541aed45038f3ab7cfdfb99aeb.pdf",
"N_202211_22_e173da8dedf4448da7038731d61a9687.pdf",
"N_202211_22_36a9a5a3a0204ba6b16716b32250e07c.pdf",
"N_202211_22_99ccd40ebebe465a96e819b1c760db05.pdf",
"N_202211_22_e87a698367c247bd9eee6c04df8ad6d2.pdf",
"N_202211_22_627d0ab8fe574faa9bd5d704fe85f7b9.pdf",
"N_202211_22_baff3b2f62e64f768236bdac1fde5dbe.pdf",
"N_202211_22_91c8c614422849958487ffd9b8eabf48.pdf",
"N_202211_22_f90da8cda66140789a60bf974fedf14f.pdf",
"N_202211_22_4e29afbf049d4c5e95a9794bfe7ef139.pdf",
"N_202211_22_df8cc788288c42d08a2474e81bb6acfe.pdf",
"N_202211_22_9ae1a60558a840c1b5f76c68f2ac5679.pdf"
)
String documentType="pdf";
APIResult ret = = Fx.file.mergerPdf(npaths, documentType);
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
Groovy举例
List npaths = [
"N_202211_22_42918a541aed45038f3ab7cfdfb99aeb.pdf",
"N_202211_22_e173da8dedf4448da7038731d61a9687.pdf",
"N_202211_22_36a9a5a3a0204ba6b16716b32250e07c.pdf",
"N_202211_22_99ccd40ebebe465a96e819b1c760db05.pdf",
"N_202211_22_e87a698367c247bd9eee6c04df8ad6d2.pdf",
"N_202211_22_627d0ab8fe574faa9bd5d704fe85f7b9.pdf",
"N_202211_22_baff3b2f62e64f768236bdac1fde5dbe.pdf",
"N_202211_22_91c8c614422849958487ffd9b8eabf48.pdf",
"N_202211_22_f90da8cda66140789a60bf974fedf14f.pdf",
"N_202211_22_4e29afbf049d4c5e95a9794bfe7ef139.pdf",
"N_202211_22_df8cc788288c42d08a2474e81bb6acfe.pdf",
"N_202211_22_9ae1a60558a840c1b5f76c68f2ac5679.pdf"
];
String documentType="pdf";
def (boolean error, Map data, String message) = Fx.file.mergerPdf(npaths, documentType);
if(error) {
log.info("error:"+message);
} else {
log.info("合并后PDF文件的信息:"+data);
List mergerNpaths = data.npaths as List;
String masterNpath = mergerNpaths[0];
log.info("合并后的PDF文件Npath:"+ masterNpath);
}
13. getBigFilePresignedUrl 获取大文件签名url
Fx.file.getBigFilePresignedUrl(<String filePath>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
filePath | String | 大文件ALI_OSS Path |
返回值类型
APIResult
返回值说明
返回的数据类型: Map
Java举例
APIResult ret = Fx.file.getBigFilePresignedUrl("ALIOSS_851a3c46b81f4adaba45c2965892dd09")
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
Groovy举例
def (Boolean error, Map data, String message) = Fx.file.getBigFilePresignedUrl("ALIOSS_851a3c46b81f4adaba45c2965892dd09")
if (error) {
log.info("error :" + message)
} else {
log.info(data)
}
14. generateQRCode 将文本生成二维码或者条形码,并以Cpath或Npath的形式返回
Fx.file.generateQRCode(<String content>, <String fileName>, <String size>, <Boolean encode>, <Boolean needCdn>, <String codeModel>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
content | String | 需要转换的文本内容,如果您选择的是条形码(BarCode),那么限定内容大小100字符.(非空) |
fileName | String | 下载时默认的源文件名称, 默认为QRCode |
size | String | 生成的图片的大小,单位:像素;如果是二维码,参数设置如400400(数字之间用“”间隔),二维码最大限制为700700,最小限制宽高皆为0,推荐400400,尽量保持宽高大小一致;如果是条形码,不需要输入,默认450*150. |
encode | Boolean | content是否使用base64编码,默认为false,使用URL编码 |
needCdn | Boolean | 是否需要CDN加速,如果为true返回Cpath,默认为false返回Npath |
codeModel | String | 生成的类型,BarCode 条形码,QRCode 二维码,此值必填,无默认类型,如果不选择会报错. |
返回值类型
APIResult
返回值说明
返回的数据类型: Map
Java举例
// 需要转换的QRCode的内容,如果您选择的是条形码(BarCode),那么限定内容大小100字符.(非空)
String content = "http%3A%2F%2Fweixin.qq.com%2Fq%2F02Z6nOpuoT8__1jyGaNA1Q";
// 生成QRCode Image后,使用Npath或Cpath,通过文件服务下载时默认生成的保存文件名 默认QRcode
String fileName = "QRCode";
// 生成的图片的大小,单位:像素;如果是二维码,参数设置如400*400(数字之间用“*”间隔),二维码最大限制为700*700,最小限制宽高皆为0,推荐400*400,尽量保持宽高大小一致;如果是条形码,不需要输入,默认450*150.
String size="400*400";
// 是否使用Base64对content内容进行了编码,默认false(URL 编码)
// 为什么需要编码? 一些特殊符号,会导致请求失败或者在生成QRCode时失败
boolean encode = false;
// 是否需要CDN加速? true 返回Cpath 默认false 返回Npath
boolean needCdn = false;
// 所需二维码的类型,BarCode 条形码,QRCode 二维码,此值必填,无默认类型,如果不选择会报错.
String codeModel="QRCode";
APIResult ret = Fx.file.generateQRCode(content, fileName, size, encode, needCdn, codeModel);
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
Groovy举例
// 需要转换的QRCode的内容,如果您选择的是条形码(BarCode),那么限定内容大小100字符.(非空)
String content = "http%3A%2F%2Fweixin.qq.com%2Fq%2F02Z6nOpuoT8__1jyGaNA1Q";
// 生成QRCode Image后,使用Npath或Cpath,通过文件服务下载时默认生成的保存文件名 默认QRcode
String fileName = "QRCode";
// 生成的图片的大小,单位:像素;如果是二维码,参数设置如400*400(数字之间用“*”间隔),二维码最大限制为700*700,最小限制宽高皆为0,推荐400*400,尽量保持宽高大小一致;如果是条形码,不需要输入,默认450*150.
String size="400*400";
// 是否使用Base64对content内容进行了编码,默认false(URL 编码)
// 为什么需要编码? 一些特殊符号,会导致请求失败或者在生成QRCode时失败
boolean encode = false;
// 是否需要CDN加速? true 返回Cpath 默认false 返回Npath
boolean needCdn = false;
// 所需二维码的类型,BarCode 条形码,QRCode 二维码,此值必填,无默认类型,如果不选择会报错.
String codeModel="QRCode";
def(boolean error, Map data, String message) = Fx.file.generateQRCode(content, fileName, size, encode, needCdn, codeModel);
if (error) {
log.info("error:" + message)
} else {
log.info("data:" + data)
}
15. packedFile 将文件列表的文件打包为一个压缩包并返回下载地址码
Fx.file.packedFile(<List files>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
files | List | 文件列表 |
返回值类型
APIResult
返回值说明
返回的数据类型: Map {"status":0, "token":"xxxxx"}, status为0表示成功,token为下载地址码, status为1表示超时,没有生成下载地址码
Java举例
APIResult ret = Fx.file.packedFile(files)
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
Groovy举例
List files = [
[
"Name":"888.jpg",
"Path":"N_202201_24_db48abc2723d4d978f240f0fb9bf35ac.webp"
]
]
def (Boolean error, Map data, String message) = Fx.file.packedFile(files)
if (error) {
log.info("error :" + message)
} else {
log.info(data)
}Map file = Maps.newHashMap();
file.put("Name", "888.jpg");
file.put("Path", "N_202201_24_db48abc2723d4d978f240f0fb9bf35ac.webp");
List files = Lists.newArrayList(file);
16. parseExcel 解析excel,通过consumer自定义处理逻辑
Fx.file.parseExcel(<String nPath>, <String sheet>, <Integer startRow>, <Consumer consumer>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
nPath | String | 文件npath |
sheet | String | sheet名称,不匹配则不会处理 |
startRow | Integer | < =0都为0处理,0代表标题行,以此往后推算行数,传null默认为1 |
consumer | Consumer | 自定义处理逻辑 |
返回值类型
APIResult
返回值说明
返回的数据类型: APIResult 一定要将结果打印或.result(),如果代码有报错,这里会有提示
Groovy举例
String npath = "N_202408_05_4210a63c2d5440809b4fad72884f3ef6.xlsx"
String sheet = "Sheet1"
Integer startRow = 0
def ret = Fx.file.parseExcel(npath, sheet, startRow, { e ->Fx.object.create("object_1yO4J__c", e, , CreateAttribute.builder().build()).result()
})
log.info(ret)
注意事项
- 不支持大附件
参考类 com.fxiaoke.functions.model.FileDownloadData
字段说明
参数 | 类型 | 说明 |
---|---|---|
fileData | byte[] | 文件byte数组 |
extensionName | String | 文件拓展名 |
fileSize | long | 文件大小 |
fileName | String | 文件名 |