feat: 在线编辑文件接收改为后端主动下载

This commit is contained in:
2024-10-10 10:30:31 +08:00
parent ee647da320
commit 726815123e
@@ -1,6 +1,7 @@
package com.jero.modules.onlyoffice.controller;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
@@ -17,7 +18,6 @@ import com.sini.com.spire.doc.documents.PageOrientation;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.mock.web.MockMultipartHttpServletRequest;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -76,23 +76,18 @@ public class OnlyOfficeController {
log.info("**********onlyoffice接收文档接口获得结果body************" + body);
String downloadUri = (String) jsonObj.get("url");
if (StrUtil.isBlank(downloadUri)) {
return;
}
log.info("**********onlyoffice接收文档接口获得downloadUri************" + downloadUri);
// 创建临时文件
File file = File.createTempFile("onlyoffice", ".docx");
downloadNetFile(downloadUri, file);
// 将file转换为MultiPartFile
// 创建一个 MockMultipartHttpServletRequest 对象
MockMultipartHttpServletRequest mockRequest = new MockMultipartHttpServletRequest();
// 将文件转换为 InputStream
InputStream inputStream = Files.newInputStream(file.toPath());
// 使用工具类转换 InputStream 到 MultipartFile 对象
MultipartFile multipartFile = IntekeyUtils.convertMultipart(inputStream, fileNm);
// 将 MultipartFile 添加到 MockMultipartHttpServletRequest 中
mockRequest.addFile(multipartFile);
mockRequest.setParameter("biz", "onlyOffice");
Result<OSSFile> result = ossFileService.outUpload(mockRequest);
Result<OSSFile> result = ossFileService.commonUpload(multipartFile, "onlyoffice");
// 将文件名字改成和原始文件一样
OSSFile dbFile = ossFileService.getById(fileId);
if (result.isSuccess()) {
@@ -104,6 +99,8 @@ public class OnlyOfficeController {
ossFile.setOnlId(dbFile.getOnlId());
ossFileService.updateById(ossFile);
}
int saved = 0;
writer.write("{\"error\":" + saved + "}");
} catch (Exception e) {
log.error("onlyOffice接收文档接口异常", e);
}