Java后端实现对象与文件接收数据(minio测试)

实现思路:

1. 两个接口实现,一个接对象数据(file),一个接文件数据(json)。

2. json对象(base64String) 实体类信息 ,请求体统一接收

3. file, String name ,String password ,String name ,

Controller层接收

统一接收类型

    @PostMapping("/insertInfo")
    public R<Void> insertInfo(MultipartFile [] file, ExFeedback exFeedback) {
        return exFeedbackService.insertInfo(exFeedback, file);
    }

 

 业务批量添加代码

    @Override
    public R<Void> insertInfo(ExFeedback exFeedback, MultipartFile[] files) {
        // 添加反馈内容表数据
        int insert = exFeedbackMapper.insert(exFeedback);

        // 循环遍历删除,添加图片数据
        for (MultipartFile file : files) {
            String fileName = file.getOriginalFilename();

            try {
                MinIOUtils.uploadFile(minIOConfig.getBucketName(), fileName, file.getInputStream());
            } catch (Exception e) {
                throw new RuntimeException(e);
            }

            // 图片url路径
            String imgUrl = MinIOUtils.getBasisUrl() + fileName;

            // 添加图片数据
            ExImg exImg = new ExImg();
            exImg.setFeedbackId(exFeedback.getId());
            exImg.setImgUrl(imgUrl);
            exImg.setImgName(fileName);
            // 循环添加数据
            exImgMapper.insert(exImg);
        }
        return R.success();
    }

业务批量删除代码

    @Override
    public R<Void> removeByIdInfo(ExFeedback exFeedback) {

        // 删除反馈内容
        exFeedbackMapper.deleteById(exFeedback);
        // 获取图片
        List<ExImg> exImg = exImgMapper.selectList(new LambdaQueryWrapper<ExImg>().eq(ExImg::getFeedbackId, exFeedback.getId()));

         // 循环遍历删除服务器图片
        exImg.forEach(re -> {
            try {
                MinIOUtils.removeFile(minIOConfig.getBucketName(), re.getImgName());
            } catch (Exception e) {
                throw new RuntimeException("删除minio图片失败");
            }
        });
          // 循环遍历删除
        exImgMapper.deleteBatchIds(exImg);
        return R.success();
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Minio上传多个文件并在Java后端接收,你需要使用Minio Java SDK和Apache Commons FileUpload库来处理文件上传请求,以下是一个简单的示例代码: ```java import java.io.InputStream; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import io.minio.MinioClient; import io.minio.errors.MinioException; import io.minio.policy.PolicyType; public class MinioUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final int MAX_FILE_SIZE = 1024 * 1024 * 5; // 5MB private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 10; // 10MB private static final String MINIO_ENDPOINT = "http://<minio-host>:<minio-port>"; private static final String MINIO_ACCESS_KEY = "<minio-access-key>"; private static final String MINIO_SECRET_KEY = "<minio-secret-key>"; private static final String MINIO_BUCKET_NAME = "<minio-bucket-name>"; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 检查请求是否为文件上传类型 boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (!isMultipart) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid request type."); return; } // 设置上传文件的临时存储目录 DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); // 创建文件上传处理器 ServletFileUpload upload = new ServletFileUpload(factory); upload.setFileSizeMax(MAX_FILE_SIZE); upload.setSizeMax(MAX_REQUEST_SIZE); // 连接到Minio服务 MinioClient minioClient = new MinioClient.Builder() .endpoint(MINIO_ENDPOINT) .credentials(MINIO_ACCESS_KEY, MINIO_SECRET_KEY) .build(); // 处理上传文件 try { List<FileItem> items = upload.parseRequest(request); for (FileItem item : items) { if (!item.isFormField() && item.getSize() > 0) { // 上传文件Minio服务 String fileName = item.getName(); InputStream stream = item.getInputStream(); minioClient.putObject(MINIO_BUCKET_NAME, fileName, stream, item.getContentType()); // 设置上传文件的访问权限 minioClient.setObjectPolicy(MINIO_BUCKET_NAME, fileName, PolicyType.PUBLIC_READ); } } } catch (Exception e) { response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); return; } // 返回上传结果 response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("Upload successful."); } } ``` 在上面的示例代码中,我们首先检查请求是否为文件上传类型,然后设置上传文件的临时存储目录,并创建文件上传处理器。接下来,我们连接到Minio服务,处理上传文件,并将文件上传到Minio存储桶中。最后,我们为上传的文件设置访问权限,并返回上传结果。 注意,在使用上述代码之前,你需要先设置好Minio服务的访问密钥和桶名称,并将`io.minio:minio`和`org.apache.commons:commons-fileupload`库添加到你的Java项目中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值