Fx.file

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 文件名
2024-09-15
4 8
Baidu
map