SpringBoot实现多字段多文件上传

在这里插入图片描述
实现思路
创建2个实体类。
1、上传文件类UpLoadDetailPO,用来存放上传文件的基本信息,如主键,文件名称,文件路径,文件类型。2、BaseDataPO用于存放主界面字段+List<UpLoadDetailPO> uploadDetailPOList形成一对多的映射关系。

<resultMap id="BaseResultMap_upload" type="BaseDataPO">
       
        <id column="id" property="id" jdbcType="VARCHAR"/>
        <result property="checkstarttime" column="checkstarttime" jdbcType="TIMESTAMP"/>
        <result property="" column="" jdbcType="VARCHAR"/>
        
 <collection property="uploadDetailPOList" javaType="ArrayList" ofType="UploadDetailPO"
  column="STATION_ID"><!--STATION_ID为外键-->
            <id column="FILE_ID" jdbcType="VARCHAR" property="fileId" />
            <result column="STATION_ID" jdbcType="VARCHAR" property="stationId" />
            <result column="FILE_NAME" jdbcType="VARCHAR" property="fileName" />
            <result column="FILE_PATH" jdbcType="VARCHAR" property="filePath" />
            <result column="TYPE" jdbcType="VARCHAR" property="type" />
            <result column="UPLOAD_TIME" jdbcType="VARCHAR" property="uploadTime" />
        </collection>
    </resultMap>

上传文件方法

public String uploadMethod(MultipartFile multipartFile, String fileName, String type) {
        String imgPath = type + File.separator + fileName;//type表示不同的图片(文件)类型
        File file = new File(baseFilePath + imgPath);
        if (!file.isDirectory()) {
            file.mkdirs();
        }
        String oldName = multipartFile.getOriginalFilename();
//        String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."), oldName.length());
        //构建文件真实路径
        File newFile = new File(file.getAbsolutePath() + File.separator + oldName);

        try {
            //转存文件到指定路径
            multipartFile.transferTo(newFile);
            return imgPath + File.separator + oldName;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }


public int uploadImportDetail(MultipartFile Mutiplefile[], Integer id, String type, HttpServletRequest request) {
        /*type
         1表示字段1(表单1)
         2表示字段2 (表单2)
         3表示字段3(表单3)
         */
//        String fileName = file.getOriginalFilename()

        //上传图片数量不超过50张
        int sum = 50;
        int sign = 1;
        for (MultipartFile file : Mutiplefile) {
            sum--;
            if (sum == 0) {
                break;
            }
            String format = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
            if (!format.equals("pdf") && !format.equals("jpg")) {
                return -1;//必须以pdf或者jpg结尾
            }
            String path = "http://" + request.getLocalAddr() + ":" + request.getServerPort() + request.getContextPath() + "/upload/";


            UpLoadDetailPO upload = new UpLoadDetailPO();

            String fileName = new SimpleDateFormat("yyyy-MM-dd").format(new Date());


            if (type.equals("1")) {
                upload.setStationId(String.valueOf(id));
                upload.setType("1");
                upload.setFileName(file.getOriginalFilename());
                upload.setFilePath(path + uploadMethod(file, fileName, "表单1"));
              

            } else if (type.equals("2")) {
                upload.setStationId(String.valueOf(id));
                upload.setType("2");
                upload.setFileName(file.getOriginalFilename());
                upload.setFilePath(path + uploadMethod(file, fileName, "表单2"));

            } else if (type.equals("3")) {
                upload.setStationId(String.valueOf(id));
                upload.setType("3");
                upload.setFileName(file.getOriginalFilename());
                upload.setFilePath(path + uploadMethod(file, fileName, "表单3"));

            }


            //插入数据库  (mapper.insert(upload))


            if (count == 0) {
                sign = -1;
                break;
            }

        }

        return sign;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Spring Boot中实现多图混合文本上传可以通过以下步骤完成: 1. 创建一个包含文本和图片的表单页面,在表单中包含一个文件输入字段用于选择图片文件,以及一个文本输入字段用于输入文本内容。 2. 在Spring Boot的控制器中,使用`@PostMapping`注解来处理表单提交的请求。在该方法中,可以使用`@RequestParam`注解来接收文本和图片文件。 3. 使用Spring的MultipartResolver来处理文件上传。你可以在Spring Boot中配置`CommonsMultipartResolver`或者`StandardServletMultipartResolver`,具体取决于你使用的Servlet容器。 4. 在控制器方法中,使用`MultipartFile`来接收上传的图片文件。你可以使用`transferTo()`方法将文件保存到服务器的某个目录中。 5. 对于文本内容,你可以直接通过`@RequestParam`注解来接收。 以下是一个简单的示例代码: ```java @Controller public class UploadController { @PostMapping("/upload") public String upload(@RequestParam("text") String text, @RequestParam("image") MultipartFile image) { if (!image.isEmpty()) { try { // 将图片保存到服务器 String fileName = image.getOriginalFilename(); String filePath = "/path/to/save/" + fileName; image.transferTo(new File(filePath)); } catch (Exception e) { e.printStackTrace(); } } // 处理文本内容 System.out.println("Text: " + text); return "redirect:/success"; } } ``` 在上述示例中,`text`参数用于接收文本内容,`image`参数用于接收图片文件。你可以根据实际需求进行修改和扩展。 希望以上信息对你有所帮助!如果有任何疑问,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值