当我们在本机安装完minio,启动并创建桶后,接下来需要在项目中进行配置。
1.pom文件导入依赖
<dependency>
<groupId>com.sinosoft</groupId>
<artifactId>sinosoft_framework_oss_minio</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
</dependency>
2.配置文件
#minio的配置信息
oss:
minio:
#端口
endpoint: http://127.0.0.1:9005/
#账号
accessKey: minioadmin
#密码
secretKey: minioadmin
#桶名称
bucketName: test
#默认 10分钟,单位为秒
preview-expires: 600
3.controller层代码
import com.sinosoft.springbootplus.common.api.ApiResult;
import com.sinosoft.springbootplus.common.controller.BaseController;
import com.sinosoft.springbootplus.files.application.service.impl.SggpFjFileServiceImpl;
import com.sinosoft.springbootplus.files.domain.entity.SggpFjFile;
import com.sinosoft.springbootplus.oss.OssClient;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
* <pre>
* 附件管理 API接口
* </pre>
*
* @author mc
* @since 2022-05-16
*/
@Slf4j
@RestController
@RequestMapping("/sggpfile")
@Api(tags = "附件管理 API", description = "提供附件管理相关的 Rest API")
public class SggpFileController extends BaseController {
private SggpFjFileServiceImpl sggpFjFileServiceImpl;
SggpFileController(SggpFjFileServiceImpl sggpFjFileServiceImpl) {
this.sggpFjFileServiceImpl = sggpFjFileServiceImpl;
}
//上传文件
@PostMapping("/upload")
public ApiResult<SggpFjFile> upload(MultipartFile multipartFile) {
return sggpFjFileServiceImpl.upload(multipartFile);
}
//下载文件接口
@GetMapping("/download")
public void download(@RequestParam(value = "id") Long id,
HttpServletResponse res) throws Exception {
sggpFjFileServiceImpl.download(id,res);
}
//删除文件接口
@GetMapping("/delete/{id}")
public ApiResult<String> delete(@PathVariable("id") Long id) throws Exception {
sggpFjFileServiceImpl.deleteSggpFjFile(id);
return ApiResult.ok("删除成功");
}
}
4.service实现类
package com.sinosoft.springbootplus.files.application.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.sinosoft.springbootplus.archive.domain.entity.SggpLsbjArchive;
import com.sinosoft.springbootplus.common.api.ApiResult;
import com.sinosoft.springbootplus.files.domain.entity.SggpFjFile;
import com.sinosoft.springbootplus.files.domain.mapper.SggpFjFileMapper;
import com.sinosoft.springbootplus.mybatis.service.impl.BaseServiceImpl;
import com.sinosoft.springbootplus.oss.OssClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* <pre>
* 附件表 服务实现类
* </pre>
*
* @author mc
* @since 2022-05-16
*/
@Slf4j
@Service
public class SggpFjFileServiceImpl extends BaseServiceImpl<SggpFjFileMapper, SggpFjFile> {
private OssClient ossClient;
private SggpFjFileMapper sggpFjFileMapper;
SggpFjFileServiceImpl (SggpFjFileMapper sggpFjFileMapper,OssClient ossClient){
this.sggpFjFileMapper =sggpFjFileMapper;
this.ossClient =ossClient;
}
@Transactional(rollbackFor = Exception.class)
public boolean saveSggpFjFile(SggpFjFile sggpFjFile) {
return super.save(sggpFjFile);
}
@Transactional(rollbackFor = Exception.class)
public boolean updateSggpFjFile(SggpFjFile sggpFjFile) {
return super.updateById(sggpFjFile);
}
@Transactional(rollbackFor = Exception.class)
public boolean deleteSggpFjFile(Long id) throws Exception {
SggpFjFile sggpFjFile = sggpFjFileMapper.selectById(id);
ossClient.delFile(sggpFjFile.getFileName());
return super.removeById(id);
}
public ApiResult<SggpFjFile> upload(MultipartFile multipartFile){
String originalFilename = multipartFile.getOriginalFilename();
String fileName = ossClient.uploadFile(multipartFile);
SggpFjFile sggpFjFile = new SggpFjFile()
.setFileName(fileName)
.setOriginalFilename(originalFilename);
boolean isSussess = saveSggpFjFile(sggpFjFile);
if(!isSussess){
return ApiResult.fail("文件上传失败!");
}else{
return ApiResult.ok(sggpFjFile);
}
}
public void download(Long id, HttpServletResponse res) throws Exception {
SggpFjFile sggpFjFile = sggpFjFileMapper.selectById(id);
ossClient.downloadFile(sggpFjFile.getFileName(),sggpFjFile.getOriginalFilename(), res);
}
public List<SggpFjFile> selectSggpFjFileList(Long ownerId){
QueryWrapper<SggpFjFile> queryWrapper = Wrappers.<SggpFjFile>query()
.eq("owner_id",ownerId);
return sggpFjFileMapper.selectList(queryWrapper);
}
}