uniapp多图片上传、预览,java后台接收

简介: uniapp多图片上传、预览,java后台接收

UniApp前台页面:

<template>
  <view class="feedback-title"><text>选择图片</text></view>
    <view class="feedback-body feedback-uploader">
      <view class="uni-uploader">
        <view class="uni-uploader-head">
          <view class="uni-uploader-title">点击预览图片</view>
          <view class="uni-uploader-info">{{ imageList.length }}/5</view>
        </view>
        <view class="uni-uploader-body">
          <view class="uni-uploader__files">
            <block v-for="(image, index) in imageList" :key="index">
              <view class="uni-uploader__file" style="position: relative;">
                <image class="uni-uploader__img" :src="image" @tap="previewImage(index)"></image>
                <view class="close-view" @click="close(index)">x</view>
              </view>
            </block>
            <view class="uni-uploader__input-box" v-show="imageList.length < 5">
              <view class="uni-uploader__input" @tap="chooseImg"></view>
            </view>
          </view>
        </view>
      </view>
    </view>
    <button type="default" class="feedback-submit" @tap="send">提交</button>
  </view>
</template>
<script>
  export default {
    data() {
      return {
        imageList: [],
        sendDate: {
          score: 0,
          content: '',
          concat: '',
          num: 0
        },
        imgurl: [],
      };
    },
    onLoad() {
    },
    methods: {
      /**
       * 关闭图片
       * @param {Object} e
       */
      close(e) {
        this.imageList.splice(e, 1);
      },
      /**
       * 选择图片
       */
      chooseImg() {
        //选择图片
        uni.chooseImage({
          sourceType: ['camera', 'album'],
          sizeType: 'compressed',
          count: 5 - this.imageList.length,
          success: res => {
            // console.log(res.tempFilePaths)
            // this.imageList = this.imageList.concat(res.tempFilePaths[0]);
            this.imageList = res.tempFilePaths;
            this.imgurl = this.imageList.map((value, index) => {
              return {
                name: 'images' + index,
                uri: value
              };
            });
            console.log(this.imgurl)
          }
        });
      },
      /**
       * 预览图片
       * @param {Object} index
       */
      previewImage(index) {
        uni.previewImage({
          urls: this.imageList,
          current: this.imageList[index]
        });
      },
      /**
       * 提交
       */
      send() {
        this.sendDate.num = this.imgurl.length
        uni.uploadFile({
          url: 'http://localhost:8080/app/back/addBack', //仅为示例,非真实的接口地址
          files: this.imgurl,
          formData: this.sendDate,
          success: (res) => {
            if (typeof res.data === 'string') {
              res.data = JSON.parse(res.data);
            }
            if (res.data.code === 200) {
              uni.showModal({
                content: '提交成功',
                showCancel: false
              });
              this.imageList = [];
            } else {
              uni.showModal({
                content: '提交失败',
                showCancel: false
              });
            }
          }
        });
      }
    }
  };
</script>

java后台Controller:

  @RequestMapping("/addBack")
    public FebsResponse addBack( MultipartRequest request, Integer num) {
        String url= "";
        //获取上传的图片
        List<MultipartFile> files = new ArrayList<>();
        if (num > 0) {
            for (int i = 0; i < num; i++) {
                files.add(request.getFile("images" + i));
            }
            for (MultipartFile file : files) {
                if (file != null && file.getSize() > 0) {
                    String basePath = "picture";
                    try {
                        url += aliOSSUpload(file, basePath)+"@";
                        System.out.println("url:" + url);
                    } catch (IOException e) {
                        e.printStackTrace();
                        return new FebsResponse().fail().message("图片上传失败!");
                    }
                }
            }
        }
        if (StringUtils.isNotBlank(url)){
            url = url.substring(0, url.length() -1);
        }
        return new R().success();
    }
目录
相关文章
|
7月前
|
Java Linux
java的jar后台启动
java的jar后台启动
192 14
|
9月前
|
数据可视化 JavaScript Java
2K star!三分钟搭建企业级后台系统,这款开源Java框架绝了!
"LikeAdmin Java是基于Spring Boot + Mybatis Plus + Vue 3的快速开发平台,内置RBAC权限管理、工作流引擎、数据可视化、三方登录等核心模块,助力开发者快速构建企业级中后台管理系统"
965 19
|
移动开发 小程序
UniApp+uView实现图片上传返回Base64
UniApp+uView实现图片上传返回Base64
603 0
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
367 0
|
小程序 Java
小程序通过get请求提交数据到java后台
小程序通过get请求提交数据到java后台
135 0
|
小程序 JavaScript Java
小程序访问java后台
小程序访问java后台
129 1
|
小程序 Java
小程序访问java后台失败解决方案
小程序访问java后台失败解决方案
136 2
|
Java 测试技术 Maven
编写一个java后台
编写一个java后台
100 1
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
5216 2
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!