oapi-sdk-java
oapi-sdk-java copied to clipboard
任务附件上传丢失文件名
你们SDK 底层处理是啥逻辑,没有获取文件名之类的,上传到任务里之后,所有附件都显示为 unknown
FormDataFile 这个代码是实习生写的吗? setFileName 变成了 this.fieldName = ...., 眼神不好咋看出来,这种 SDK 性质的包,用自动生成工具不好吗?这样才能跟实际 API保持完全一致性,靠人总会出问题。
workaround:
仿照 com.lark.oapi.core.httpclient.OkHttpTransport 实现一个 IHttpTransport, 将其中构建 multipart 的代码改成
for (FormDataFile file : ((FormData) body).getFiles()) {
final File finalFile = file.getFile();
builder.addFormDataPart(file.getFieldName(),
finalFile.getName()
, RequestBody.create(MediaType.parse("application/octet-stream"), finalFile));
}
在构建 Client 的时候,使用 Client.newBuilder(...).httpTransport(new 自定义的Transport()).build()
相当于不使用系统自带的 OKHttpTransport,用自定义的。
注意这个 workaround 只能说上传之后不会 unknown,但不支持自定义 filename,根据实际被上传到文件名来显示。但至少是一个 workaround 了。