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();
    }
目录
相关文章
|
16天前
|
前端开发 小程序 Java
uniapp上传图片 前端以及java后端代码实现
uniapp上传图片 前端以及java后端代码实现
30 0
|
18天前
|
存储 缓存 算法
优化 Java 后台代码的关键要点
【4月更文挑战第5天】本文探讨了优化 Java 后台代码的关键点,包括选用合适的数据结构与算法、减少不必要的对象创建、利用 Java 8 新特性、并发与多线程处理、数据库和缓存优化、代码分析与性能调优、避免阻塞调用、JVM 调优以及精简第三方库。通过这些方法,开发者可以提高系统性能、降低资源消耗,提升用户体验并减少运营成本。
|
1月前
|
人工智能 前端开发 Java
基于java和uniapp的即时聊天源码
基于java和uniapp的即时聊天源码
24 1
|
1月前
使用ueditor实现多图片上传案例——实体类(Shopping.java)
使用ueditor实现多图片上传案例——实体类(Shopping.java)
18 0
|
2月前
|
监控 数据可视化 关系型数据库
微服务架构+Java+Spring Cloud +UniApp +MySql智慧工地系统源码
项目管理:项目名称、施工单位名称、项目地址、项目地址、总造价、总面积、施工准可证、开工日期、计划竣工日期、项目状态等。
307 6
|
18天前
|
消息中间件 安全 Java
解密 Java 后台架构设计之道
【4月更文挑战第5天】本文探讨了Java后台架构设计的最佳实践,包括分层架构、微服务、异步处理与消息队列、RESTful API设计、数据库优化、安全控制、容错高可用、配置管理、CI/CD和监控日志。强调了使用微服务、Spring Boot/Spring Cloud、异步消息队列、RESTful API、安全框架Spring Security等技术的重要性,以及监控和自动化部署在确保系统稳定性和效率上的关键角色。通过这些实践,开发者能构建高效、稳定且可扩展的后台系统。
|
1月前
|
传感器 人工智能 监控
智慧工地云信息平台源码(微服务+java+springcloud+uniapp+mysql)
智慧工地云信息平台源码(微服务+java+springcloud+uniapp+mysql)
30 0
|
2月前
|
Java
POI上传excel的java后台逻辑
POI上传excel的java后台逻辑
|
2月前
|
Java
java上传、下载、预览、删除ftp服务器上的文件
java上传、下载、预览、删除ftp服务器上的文件
|
3月前
|
SQL Java 关系型数据库
疫情之后,幸获内推,4面京东拿下offer(Java后台研发岗)
在2019年时,就早早生了跳槽的念头,心想着拿完年终奖就要开始“跑路”,但万万没想到过完春节之后竟被疫情耽搁了这么久,导致很多互联网公司的招聘都往后一拖再拖。幸运的是,刚复工之后,就收到了朋友的消息,有京东内推的机会,问我要不要试一试,虽然说之前的目标是BAT,但根据自己目前情况来说,可能拿个京东也算是不错了,于是着手准备起来。

热门文章

最新文章