添加文件管理功能代码

main
gitee 1 week ago
parent 079d3b0862
commit 2a8c4d6805

@ -0,0 +1,43 @@
package com.supervision.controller;
import com.supervision.dto.R;
import com.supervision.service.FileService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
/**
*
*/
@RestController
@RequestMapping("/file")
@RequiredArgsConstructor
public class FileController {
private final FileService fileService;
/**
*
* @param file
* @return
*/
@PostMapping("/upload")
public R<String> upload(@RequestPart("file") MultipartFile file) throws IOException {
String fileId = fileService.upload(file);
return R.ok(fileId);
}
/**
*
* @param fileId
* @param response
*/
@GetMapping("/download")
public void downLoad(@RequestParam("fileId") String fileId, HttpServletResponse response) {
fileService.downLoad(fileId,response);
}
}

@ -25,6 +25,16 @@ public class SysByteArray implements Serializable {
private String contentType;
/**
*
*/
private Long size;
/**
*
*/
private String fileName;
/**
*
*/

@ -0,0 +1,23 @@
package com.supervision.service;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
public interface FileService {
/**
*
* @param file
* @return ID
*/
String upload(MultipartFile file) throws IOException;
/**
*
* @param fileId ID
* @param response HTTP
*/
void downLoad(String fileId, HttpServletResponse response);
}

@ -0,0 +1,51 @@
package com.supervision.service.impl;
import cn.hutool.core.lang.Assert;
import com.supervision.domain.SysByteArray;
import com.supervision.service.FileService;
import com.supervision.service.SysByteArrayService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@Slf4j
@Service
@RequiredArgsConstructor
public class SysFileServiceImpl implements FileService {
private final SysByteArrayService sysByteArrayService;
@Override
public String upload(MultipartFile file) throws IOException {
SysByteArray byteArray = new SysByteArray();
byteArray.setFileName(file.getOriginalFilename());
byteArray.setBytes(file.getBytes());
byteArray.setSize(file.getSize());
byteArray.setContentType(file.getContentType());
sysByteArrayService.save(byteArray);
return byteArray.getId();
}
@Override
public void downLoad(String fileId, HttpServletResponse response) {
Assert.notEmpty(fileId, "文件ID不能为空");
SysByteArray byteArray = sysByteArrayService.getById(fileId);
Assert.notNull(byteArray, "文件不存在或已被删除");
response.setContentType(byteArray.getContentType());
response.setHeader("Content-Disposition", "attachment; filename=\"" + byteArray.getFileName() + "\"");
try {
response.getOutputStream().write(byteArray.getBytes());
response.getOutputStream().flush();
} catch (IOException e) {
log.error("文件下载失败: {}", e.getMessage(), e);
throw new RuntimeException("文件下载失败", e);
}
}
}

@ -8,12 +8,14 @@
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="bytes" column="bytes" jdbcType="BINARY"/>
<result property="contentType" column="content_type" jdbcType="VARCHAR"/>
<result property="size" column="size" jdbcType="BIGINT"/>
<result property="fileName" column="file_name" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,bytes,create_time,content_type,
id,bytes,create_time,content_type,size,file_name,
update_time
</sql>
</mapper>

Loading…
Cancel
Save