文件上传bug

This commit is contained in:
zjarlin 2024-09-20 13:59:18 +08:00
parent 2f77067c7c
commit b357eee1b3
3 changed files with 8 additions and 16 deletions

View File

@ -2,7 +2,6 @@ package com.gisroad.business.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
import com.gisroad.business.common.base.BaseController;
import com.gisroad.business.common.entity.BaseEntity;
@ -18,14 +17,12 @@ import com.gisroad.sjzyxt.common.models.ResponseModel;
import com.gisroad.sjzyxt.service.CommonService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.Cleanup;
import lombok.SneakyThrows;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
@ -163,9 +160,7 @@ public class BizFileController extends BaseController<IBizFileService, BizFile>
@ApiOperation("上传文件")
@PostMapping("/upload")
public ResponseModel<BizFile> uploadFile(@RequestParam("file") MultipartFile file, BizFile bizFile) {
byte[] bytes = IoUtil.readBytes(file.getInputStream());
@Cleanup ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
boolean zipFilePasswordProtected = JlZipUtil.isZipFilePasswordProtected(byteArrayInputStream);
boolean zipFilePasswordProtected = JlZipUtil.isZipFilePasswordProtected(file);
if (zipFilePasswordProtected) {
return singleUploadFile(file, bizFile);
}

View File

@ -70,14 +70,6 @@ public class BizFileServiceImpl extends ServiceImpl<BizFileMapper, BizFile> impl
return createTmpFile(file,null);
}
@SneakyThrows
public static void main(String[] args) {
String s = "/Users/zjarlin/Downloads/xg/SJZYXT-SRS 软件需求规格书.zip";
// ZipFile zipFile = new ZipFile(s);
// boolean encrypted = zipFile.isEncrypted();
boolean zipFilePasswordProtected = JlZipUtil.isZipFilePasswordProtected(FileUtil.getInputStream(s));
System.out.println(zipFilePasswordProtected);
}
@Transactional(rollbackFor = Exception.class)
@Override

View File

@ -6,6 +6,7 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
import com.gisroad.business.util.DownloadUtil;
import lombok.Cleanup;
@ -167,8 +168,12 @@ public class JlZipUtil {
* @return 如果文件被密码保护则返回 true否则返回 false
*/
@SneakyThrows
public static boolean isZipFilePasswordProtected(InputStream inputStream) {
byte[] bytes = IoUtil.readBytes(inputStream);
public static boolean isZipFilePasswordProtected(MultipartFile file) {
String originalFilename = file.getOriginalFilename();
if (!StrUtil.containsAny(originalFilename, ".zip")) {
return false;
}
byte[] bytes = IoUtil.readBytes(file.getInputStream());
@Cleanup ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
// 创建临时文件
File tempFile = FileUtil.createTempFile("tempfile", ".zip", true);