vue使用formdata上传多个图片,springboot以文件数组的形式接受

vue代码(使用element-ui):

思路:依次遍历fileList数组,将其中的每个图片文件提取出,再加入到formdata中,因为是多文件上传,后端以文件数组的形式接受,

因此每次合并到formdata的key值都为同一值。

    uploadImg() {
        let imgfile = new FormData();
        for (var i = 0; i < this.fileList.length; i++) {
            // files[i] = this.fileList[i].raw;
            imgfile.append("files",this.fileList[i].raw);
        }
        // console.log("文件长度",files.length);
        imgfile.append("id",this.radio);
        console.log("将要上传的文件:",imgfile.get("files"));
        if (this.fileList.length > 0) {
            this.$ajax({
                method: "post",
                url: "/xxxx/xxxx/xxxxxxxx/productImg",
                data: imgfile
            }).then(resp => {
                console.log("返回值:",resp.data.code)
                if (resp.data.code) {
                    this.$message({
                        message: "上传药材图片成功",
                        type: "success"
                    });
                } else {
                    this.$message({
                        message: "上传药材图片失败",
                        type: "warning"
                    })
                }
                this.cleanImg();
                this.dialogUploadPhoto = false;
            })
        } else {
            this.$message({
                message: "请选择需要上传的图片",
                type: "warning"
            });
        }
    }

后端代码:

Controller:

    @PostMapping("productImg")
    public ResponseEntity<Map<String,Object>> uploadImg(@RequestParam("files")MultipartFile[] files, HttpServletRequest request, @RequestParam Map<String, Object> map) {
        return ResponseEntity.status(HttpStatus.CREATED).body(productBaseService.saveImg(files,request,map));
    }

service:

    @Override
    public Map<String, Object> saveImg(MultipartFile[] files, HttpServletRequest request, Map<String, Object> map) {
        Map<String,Object> maps = new HashMap<String, Object>();try {
            // 判断文件数组是否为空
            if (files == null || files.length < 1) {
                maps.put("code",false);
            } else {
                System.out.println("有数据");
                //判断是否有路径
                String path = Constant.IMG_PATH_FILE;
                if (!new File(path).exists()) {
                    new File(path).mkdirs();
                }
                // 遍历图片文件
                for (int i = 0; i < files.length; i++) {
                    MultipartFile file = files[i];
                    // 将图片文件保存到服务器,同时返回上传后图片的名字
                    String image = uploadFile(file,path,map);
                    ProductBaseImg productBaseImg = new ProductBaseImg();
                    productBaseImg.setId(UUIDUtil.uuid());
                    productBaseImg.settImgId(image);
                    productBaseImg.settProductbaseId((String)map.get("id"));
                    productBaseImgMapper.insert(productBaseImg);
                    System.out.println("上传成功");
                }
                maps.put("code",true);
            }
        } catch (IOException e) {
            maps.put("code",false);
            e.printStackTrace();
        }
        return maps;
    }

    public static String uploadFile(MultipartFile file,String path,Map<String, Object> map) throws IOException {
        String name = file.getOriginalFilename();
        String suffixName = name.substring(name.lastIndexOf("."));
        // 生成图片id
        String imgid = UUIDUtil.uuid();
        String fileName = imgid + suffixName;
        File tempFile = new File(path,fileName);
        if(!tempFile.getParentFile().exists()){
            tempFile.getParentFile().mkdir();
        }
        if(tempFile.exists()){
            tempFile.delete();
        }
        tempFile.createNewFile();
        file.transferTo(tempFile);
        return tempFile.getName();
    }

原文地址:https://www.cnblogs.com/flypig666/p/12267718.html

时间: 2024-11-05 14:46:15

vue使用formdata上传多个图片,springboot以文件数组的形式接受的相关文章

HTTP使用 multipart/form-data 上传多个字段(包括文件字节流 octet-stream)

自己用到的一个向服务器上传多个字段的实例,代码不全,仅做参考. 用的是WinINet,上传的字段中包括文件字节流 /* PHttpRequest中自行组装body之后,HttpSendRequest中自己判断body长度时, 由于文件内容中存在 \0,所以body长度计算错误,导致上传的文件内容不正确,直接指定body的长度也不行... PHttpRequest中未使用InternetWriteFile, */ int UpdateToServer2(stResumeInfo st, int&

使用FormData上传文件、图片

关于FormData XMLHttpRequest Level 2添加了一个新的接口  ---- FormData 利用FormData对象,可以通过js用一些键值对来模拟一系列表单控件,可以使用XMLHttpRequest的 send( ) 方法来异步提交表单 与普通的ajax相比,使用FormData的最大优点就是可以异步上传二进制文件 FormData对象 FormData对象,可以把所有表单元素的name与value组成一个queryString,提交到后台. 在使用ajax提交时,使用

MVC使用JCrop上传、裁剪图片

JCrop用来裁剪图片,本篇想体验的是: 在视图页上传图片: 上传成功,跳转到另外一个编辑视图页,使用JCrop对该图片裁剪,并保存图片到指定文件夹: 裁剪成功后,在主视图页显示裁剪图片: 当然,实际项目中最有可能的做法是:在本页上传.裁剪并保存. □ 思路 →在上传图片视图页,把图片上传保存到一个临时文件夹Upload→在编辑裁剪视图页,点击"裁剪"按钮,把JCrop能提供的参数,比如宽度.高度.离顶部距离,离底部距离,离左右端距离等封装成类,传递给控制器方法→控制器方法根据接收到的

dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.

http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术:HTML5的api,作为一名前端的菜鸟,没什么可说的,直接分享自己学习的资料: 关于HTML5 的这些新的特性大家可以到Mozilla的开发者社区MDN https://developer.mozilla.org/zh-CN/ 上查HTML5的资料 还有就是发掘到的比较牛逼的一篇博客:http:/

PHP 图片上传工具类(支持多文件上传)

====================ImageUploadTool======================== <?php class ImageUploadTool { private $file; //文件信息 private $fileList; //文件列表 private $inputName; //标签名称 private $uploadPath; //上传路径 private $fileMaxSize; //最大尺寸 private $uploadFiles; //上传文件

Django上传并显示图片

Django上传并显示图片 非常详细的教程,教大家一步步用Django上传与显示图片.用例子学习是一个不错的方法,下面我用一个非常简单的例子为大家讲解Django中图片的上传与显示. 1. 创建名称为'a'的项目 1 $django-admin startproject a 2.在项目'a'中创建名为'b'的app 12 $cd a$python manage.py startapp b 3.把b加入到settings.py中的INSTALLED_APPS中 123456789 INSTALLE

canvas利用formdata上传到服务器

1.首先绘制canvas图片 <canvas id="myCanvas" width="100" height="100" style="border:1px solid #d3d3d3;border-radius:50%"> 您的浏览器不支持 HTML5 canvas 标签. </canvas> 这里canvas绘图就不是本文章讲解的内容,我们简单的在画布上写两个字: var canvas = doc

HTTP multipart/form-data 上传方式说明(有8个注意点)

( From: http://home.meegoq.com/home-space-do-blog-uid-17-id-81.html ) HTTP multipart/form-data 上传方式说明 已有 123 次阅读 2010-12-1 11:13 |个人分类:网络学习|关键词:HTTP multipart http上传文件方面的功能使用的协议是rfc1867 (http://www.ietf.org/rfc/rfc1867.txt) 为 http 协议.客户端的浏览器,如 Micros

ueditor使用-图片上传正常,图片显示异常404

做个小项目,用到了ueditor,其中需要在ueditor中上传图片. 问题症状: 点击上传图片的按钮后选择图片,上传到了目的文件夹,但是显示不了,f12查看也是404.后来发觉显示图片时路径不对. 解决方案: 翻看官网文档,找到了个博客:http://popozhu.github.io/2014/07/03/ueditor%E5%9B%BE%E7%89%87%E4%B8%8A%E4%BC%A0%E8%B7%AF%E5%BE%84%E9%85%8D%E7%BD%AE/ 说的还蛮详细.找了下原因,