|
@@ -1,10 +1,12 @@
|
|
package com.fdkankan.scene.service.impl;
|
|
package com.fdkankan.scene.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
+import cn.hutool.core.io.IoUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.fdkankan.common.constant.ConstantFilePath;
|
|
import com.fdkankan.common.constant.ErrorCode;
|
|
import com.fdkankan.common.constant.ErrorCode;
|
|
import com.fdkankan.common.constant.ServerCode;
|
|
import com.fdkankan.common.constant.ServerCode;
|
|
import com.fdkankan.common.constant.TbStatus;
|
|
import com.fdkankan.common.constant.TbStatus;
|
|
@@ -14,6 +16,7 @@ import com.fdkankan.common.response.ResultData;
|
|
import com.fdkankan.common.user.SSOLoginHelper;
|
|
import com.fdkankan.common.user.SSOLoginHelper;
|
|
import com.fdkankan.common.user.SSOUser;
|
|
import com.fdkankan.common.user.SSOUser;
|
|
import com.fdkankan.common.util.BASE64DecodedMultipartFile;
|
|
import com.fdkankan.common.util.BASE64DecodedMultipartFile;
|
|
|
|
+import com.fdkankan.common.util.CreateObjUtil;
|
|
import com.fdkankan.common.util.FileUtil;
|
|
import com.fdkankan.common.util.FileUtil;
|
|
import com.fdkankan.fyun.oss.UploadToOssUtil;
|
|
import com.fdkankan.fyun.oss.UploadToOssUtil;
|
|
import com.fdkankan.scene.entity.ScenePro;
|
|
import com.fdkankan.scene.entity.ScenePro;
|
|
@@ -23,11 +26,18 @@ import com.fdkankan.scene.service.ISceneProService;
|
|
import com.fdkankan.scene.service.ISceneUploadService;
|
|
import com.fdkankan.scene.service.ISceneUploadService;
|
|
import com.fdkankan.scene.vo.DeleteFileParamVO;
|
|
import com.fdkankan.scene.vo.DeleteFileParamVO;
|
|
import com.fdkankan.scene.vo.UploadContentParamVO;
|
|
import com.fdkankan.scene.vo.UploadContentParamVO;
|
|
|
|
+import java.io.BufferedInputStream;
|
|
|
|
+import java.io.BufferedOutputStream;
|
|
|
|
+import java.io.FileInputStream;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
+import java.io.InputStream;
|
|
|
|
+import java.io.OutputStream;
|
|
|
|
+import java.net.URLEncoder;
|
|
import java.nio.charset.Charset;
|
|
import java.nio.charset.Charset;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
@@ -219,4 +229,46 @@ public class SceneUploadServiceImpl extends ServiceImpl<ISceneUploadMapper, Scen
|
|
|
|
|
|
return this.ossUrlPrefix + param.getOssPath();
|
|
return this.ossUrlPrefix + param.getOssPath();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void formatMp4(MultipartFile file, HttpServletResponse response) throws Exception {
|
|
|
|
+
|
|
|
|
+ String extName = cn.hutool.core.io.FileUtil.extName(file.getOriginalFilename());
|
|
|
|
+ File oldFile = File.createTempFile(UUID.randomUUID().toString() ,extName);
|
|
|
|
+ file.transferTo(oldFile);
|
|
|
|
+
|
|
|
|
+ File destFile = File.createTempFile(UUID.randomUUID().toString() ,extName);
|
|
|
|
+ CreateObjUtil.formatMp4(oldFile.getPath(), destFile.getPath());
|
|
|
|
+
|
|
|
|
+ if(cn.hutool.core.io.FileUtil.exist(destFile.getPath())){
|
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5038);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ File outFile = new File(destFile.getPath());
|
|
|
|
+ //定义处理流
|
|
|
|
+ try(
|
|
|
|
+ InputStream inputStream = new BufferedInputStream(new FileInputStream(outFile));
|
|
|
|
+ OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())
|
|
|
|
+ ){
|
|
|
|
+ response.reset();
|
|
|
|
+ // 设置在下载框默认显示的文件名
|
|
|
|
+ response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getOriginalFilename(), "UTF-8"));
|
|
|
|
+ //写明文件大小
|
|
|
|
+ response.addHeader("Content-Length", "" + outFile.length());
|
|
|
|
+ // 指明response的返回对象是文件流
|
|
|
|
+ response.setContentType("application/octet-stream");
|
|
|
|
+ log.debug("开始读取文件流");
|
|
|
|
+ //返回从该输入流中可以读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞
|
|
|
|
+ byte[] bytes = new byte[inputStream.available()];
|
|
|
|
+ //将pdf的内容写入bytes中
|
|
|
|
+ inputStream.read(bytes);
|
|
|
|
+ //将bytes中的内容写入
|
|
|
|
+ outputStream.write(bytes);
|
|
|
|
+ //刷新输出流,否则不会写出数据
|
|
|
|
+ outputStream.flush();
|
|
|
|
+ }finally {
|
|
|
|
+ FileUtil.delFile(oldFile.getPath());
|
|
|
|
+ FileUtil.delFile(destFile.getPath());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|