SpringBoot处理项目中一些常见的多文件上传和单文件上传

SpringBoot处理项目中一些常见的多文件上传和单文件上传

1.控制层代码写法

代码如下(示例):

@RequestMapping(value = "/fileUpload", method = {RequestMethod.POST})
    public RespResultVo fileUpload(@RequestParam("uploadFile") MultipartFile[] file, @RequestParam("str") String[] str, @RequestParam("number") Integer number, HttpServletRequest request) throws IOException {
        System.out.println("--------------------------------文件上传执行了--------------------------");
        for (String s : str) {
            System.out.println("------------------------------------------str="+s);
        }
        if (file.length > 0) {
            for (MultipartFile multipartFile : file) {
                try {
                    if (multipartFile.isEmpty()) {
                        return RespResultVo.error("文件为空");
                    }
                    String fileName = multipartFile.getOriginalFilename();
                    String suffixName = fileName.substring(fileName.lastIndexOf('.'));
                    String newFileName = UUID.randomUUID().toString() + suffixName;
                    System.out.println("-------------------------------newFileName:" + newFileName);
                    //判断文件上传路径是否存在
                    String fileUploadTarget = request.getSession().getServletContext().getRealPath("/upload/images/");
                    System.out.println("----------------------------fileUploadTarget:" + fileUploadTarget);
                    File dest = new File(fileUploadTarget, newFileName);
                    if (!dest.getParentFile().exists()) {
                        dest.getParentFile().mkdirs();  //如果文件目录不存在则新建目录
                    }
                    multipartFile.transferTo(dest);

                    String path = request.getScheme()+"://" + request.getServerName()+"/jsaas"+"/upload/images/"+newFileName;
                    System.out.println("-----------------------------------------------path:" + path);

                   /* PtYgExample example=new PtYgExample();
                    example.createCriteria().andZgbhEqualTo(zgbh);
                    PtYg ptYg=new PtYg();
                    ptYg.setYgzpurl(newFileName);
                    ptYgMapper.updateByExampleSelective(ptYg,example);
                    //System.out.println(dest.getPath());*/
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return RespResultVo.ok("文件上传成功");
    }

2.多文件上传页面写法

代码如下(示例):

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <title>多文件上传</title>
</head>
<body>
<form method="post" action="/fileUpload" enctype="multipart/form-data">
    <input type="file" name="uploadFile"><br>
    <input type="file" name="uploadFile"><br>
    <input type="file" name="uploadFile"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

总结

这种方式只适用于前后端在一个服务器下,可以预览到图片,如果是前后端分离的项目,则需要单独在配置文件application.yml文件中定义上传文件的目标存储地址,然后在此控制层获取到并上传文件到指定目录下,前端通过相对路径读取的方式预览图片。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值