#3.不用本地上传方式而是通过获取第三方返回的已签署协议下载链接以网络流的方式直接将签署好的协议连同转化的图片上传到公司OSS服务器:
在这里插入代码片
//fileUrl为第三方返回的文件直接下载链接
String fileUrl = String.valueOf(jsonArray.getJSONObject(0).get("fileUrl"));
//合同文件上传到oss 属性设置
String subFileName = fileName.substring(0, fileName.lastIndexOf("."));
String fileExtension = fileName.substring(fileName.lastIndexOf("."));
Long timeStamp = System.currentTimeMillis();
String newFileName = subFileName + "_" + timeStamp + fileExtension;
String osspath = "agent/protocol/" + agentIDStr + "/" + newFileName;
String bucketName = "tope365-agent";
//合同文件对应的预览图片上传到oss 属性设置
String fileExtensionImg = ".jpg";
String newFileNameImg = subFileName + "_" + timeStamp + fileExtensionImg;
String osspathImg = "agent/protocol/" + agentIDStr + "/" + newFileNameImg;
// 上传网络流 图片预览文件
InputStream inputStreamImg = new URL(fileUrl).openStream();
// 加载解析PDF文件
PDDocument doc = PDDocument.load(inputStreamImg);
PDFRenderer pdfRenderer = new PDFRenderer(doc);
PDPageTree pages = doc.getPages();
int pageCount = pages.getCount();
for (int i = 0; i < pageCount; i++) {
BufferedImage bim = pdfRenderer.renderImageWithDPI(i, 200);
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(bim, "jpg", os);
byte[] datas = os.toByteArray();
inputStreamImg = new ByteArrayInputStream(datas);
//若pdf合同只有一页
if (i == 0) {
OssFileUtils.getInstance().uploadFile(bucketName, inputStreamImg, osspathImg);
} else {
newFileNameImg = subFileName + "_" + (++i) + "_" + timeStamp + fileExtensionImg;
osspathImg = "agent/protocol/" + agentIDStr + "/" + newFileNameImg;
OssFileUtils.getInstance().uploadFile(bucketName, inputStreamImg, osspathImg);
}
}
// 上传网络流 合同文件
InputStream inputStream = new URL(fileUrl).openStream();
String descPath = OssFileUtils.getInstance().uploadFile(bucketName, inputStream, osspath);