Springboot+MultipartFile实现单文件,多文件批量上传。

代码:

    /**
     * 文件上传请求
     */
    /**
     * 文件上传请求
     */
    @PostMapping(value ="upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    @ApiOperation(value = "文件上传请求")
    public R<SysFile> upload(@RequestPart("file") MultipartFile file)
    {
        try
        {
            // 上传并返回访问地址
            String url = sysFileService.uploadFile(file);
            SysFile sysFile = new SysFile();
            sysFile.setName(FileUtils.getName(url));
            sysFile.setUrl(url);
            return R.ok(sysFile);
        }
        catch (Exception e)
        {
            log.error("上传文件失败", e);
            return R.fail(e.getMessage());
        }
    }

    /**
     * 批量上传
     * @param files
     * @return
     */
    @PostMapping(value ="batchUploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    @ApiOperation(value = "文件上传请求")
    public R<JSONArray> batchUploadFile(@RequestPart("files") MultipartFile[] files)
    {
        try
        {
            JSONArray jsonArray=new JSONArray();

            for(MultipartFile file : files) {//循环单个上传
                // 上传并返回访问地址
                String url = sysFileService.uploadFile(file);
                SysFile sysFile = new SysFile();
                sysFile.setName(FileUtils.getName(url));
                sysFile.setUrl(url);
                jsonArray.add(sysFile);
            }
            return R.ok(jsonArray);
        }
        catch (Exception e)
        {
            log.error("上传文件失败", e);
            return R.fail(e.getMessage());
        }
    }

Springboot里面要用这个标签接受文件,不然swagger上可能没有按钮。

@PostMapping(value ="upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)

consumes直译是消费者,其实就是限制方法处理指定Content-Type的http请求
常见的媒体格式类型如下:

text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
application/xhtml+xml :XHTML格式
application/xml: XML数据格式
application/atom+xml :Atom XML聚合格式
application/json: JSON数据格式
application/pdf:pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

Swagger 验证一下:
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实现用户批量注册可以通过以下步骤: 1. 创建一个包含用户信息的 Excel 文件,例如用户名、密码、邮箱等。 2. 使用 Java 代码解析 Excel 文件,读取用户信息。 3. 使用 Spring Boot 开发后端接口,接收前端传来的用户信息,并将用户信息存入数据库中。可以使用 MyBatis 或者 JPA 等持久层框架操作数据库。 4. 使用 Vue 开发前端页面,通过表上传 Excel 文件,发送请求调用后端接口实现批量注册功能。 下面是一个简的示例代码,使用 Apache POI 解析 Excel 文件: ```java // 读取 Excel 文件 File file = new File("user.xlsx"); Workbook workbook = WorkbookFactory.create(file); Sheet sheet = workbook.getSheetAt(0); // 解析 Excel 文件,获取用户信息 List<User> userList = new ArrayList<>(); for (Row row : sheet) { if (row.getRowNum() == 0) { continue; // 忽略标题行 } User user = new User(); user.setUsername(row.getCell(0).getStringCellValue()); user.setPassword(row.getCell(1).getStringCellValue()); user.setEmail(row.getCell(2).getStringCellValue()); userList.add(user); } // 批量插入用户信息到数据库 userRepository.saveAll(userList); ``` 在前端页面中,可以使用 element-ui 的 Upload 组件实现上传 Excel 文件的功能,示例代码如下: ```html <template> <div> <el-upload class="upload-excel" action="/api/user/upload" :show-file-list="false" :on-success="handleSuccess" :before-upload="beforeUpload"> <el-button size="small" type="primary">上传Excel文件</el-button> </el-upload> </div> </template> <script> export default { methods: { // 上传前的处理 beforeUpload(file) { const isExcel = file.type === 'application/vnd.ms-excel' || file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; if (!isExcel) { this.$message.error('请上传 Excel 文件'); } return isExcel; }, // 上传成功的处理 handleSuccess(response) { if (response.code === 200) { this.$message.success('批量注册成功'); } else { this.$message.error('批量注册失败'); } } } } </script> ``` 在后端接口中,可以使用 Spring Boot 的 @RestController 和 @PostMapping 注解实现接收请求的功能,示例代码如下: ```java @RestController @RequestMapping("/api/user") public class UserController { @Autowired private UserService userService; // 接收上传的 Excel 文件并解析 @PostMapping("/upload") public Result uploadExcel(@RequestParam("file") MultipartFile file) { List<User> userList = ExcelUtils.readExcel(file); boolean result = userService.batchRegister(userList); if (result) { return Result.success(); } else { return Result.error(); } } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值