【Java后端接收多个文件】java后端接收多个文件,因为是多个文件,所以在接收的时候可以使用 1、List<MultipartFile> 2、MultipartFile[]

Java后端接收多个文件

java后端接收多个文件,因为是多个文件,所以在接收的时候可以使用
1、List
2、MultipartFile[]
这两种其实都能接收到多个文件列表,接收到之后再遍历,获取文件,对文件进行存储即可。

保存文件

/**
     * 接收传递的文件数组
     * @param multipartFiles multipartFiles
     * @return result
     */
    public List<String> receiveFileToDir(List<MultipartFile> multipartFiles) {
        // 输出的文件流保存到本地文件
        // uploadDir 是设置好的文件保存地址,可自行设置
        String path = uploadDir;
        // 判断文件保存目录是否存在,不存在则创建相关目录
        File tempFile = new File(path);
        if (!tempFile.exists()) {
            tempFile.mkdirs();
        }
        List<String> fileNameList = new ArrayList<>();
        for (MultipartFile file : multipartFiles){
            OutputStream os = null;
            InputStream inputStream = null;
            String originalFilename = file.getOriginalFilename();
            String[] split = originalFilename.split("\\.");

            String fileName = codeUtilBuil() + "." + split[1];
            try {
                inputStream = file.getInputStream();
            } catch (IOException e) {
                e.printStackTrace();
            }
		// File.separato 系统默认分隔符,相当于 / 
            try {
                os = new FileOutputStream(tempFile.getPath()+ "/" + File.separator + fileName);
                // 开始读取
                byte[] bs = new byte[1024];
                // 读取数据
                int length;
                while ((length = inputStream.read(bs)) != -1) {
                    os.write(bs, 0, length);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                // 关闭所有链接
                try {
                    os.close();
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            fileNameList.add(path + "/" +fileName);
        }
        return fileNameList;
    }

重命名文件名:

/**
     * 上传文件名序号
     * @return
     */
    public String codeUtilBuil(){
        StringBuffer sb = new StringBuffer();
        Random random = new Random();
        for (int i = 0; i < 12; i++) {
            int y = random.nextInt(62);
            if (y <= 9) {
                sb.append(y);
            } else {
                if (y <= 35) {
                    y += 55;
                } else {
                    y += 61;
                }
                sb.append((char) y);
            }
        }
        return sb.toString();
    }

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值