uni-file-picker文件选择上传功能实现

 更新时间:2023年07月08日 10:23:52   作者:四季奶青全糖去冰@  
这篇文章主要介绍了uni-file-picker文件选择上传,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

基础用法

mode="grid" ,可以使用九宫格样式选择图片

limit="1" ,则最多选择张图片

file-mediatype="image",限定只选择图片

file-extname='png,jpg',限定只选择 png和jpg后缀的图片

auto-upload="false",可以停止自动上传,通过ref调用upload方法自行选择上传时机。与ref="files"搭配使用,this.$refs.files.upload()。

<uni-file-picker 
    v-model="imageValue"  
    file-mediatype="image"
    mode="grid"
    file-extname="png,jpg"
    :limit="1"
    @progress="progress" 
    @success="success" 
    @fail="fail" 
    @select="select"
/>
<script>
    export default {
        data() {
            return {
                imageValue:[]
            }
        },
        methods:{
            // 获取上传状态
            select(e){
                console.log('选择文件:',e)
            },
            // 获取上传进度
            progress(e){
                console.log('上传进度:',e)
            },
            // 上传成功
            success(e){
                console.log('上传成功')
            },
            // 上传失败
            fail(e){
                console.log('上传失败:',e)
            }
        }
    }
</script>

案例一(只上传一张图片)

<template>
  <view class="container example">
    <uni-forms ref="baseForm" :modelValue="baseFormData" label-position="top">
      <uni-forms-item label="图片上传">
       <uni-file-picker 
        v-model="imageValue" 
        fileMediatype="image" 
        mode="grid" 
        @select="select"   
        limit="1"
        ></uni-file-picker>
      </uni-forms-item>
    </uni-forms>
  </view>
</template>
export default {
    data() {
      return {
        //图片
        imageValue:[],
      }
    },
    methods:{
      //图片上传
      select(e){
        const tempFilePaths = e.tempFilePaths;
        //获取图片临时路径
        const imgUrl=tempFilePaths[0]
        uni.uploadFile({
          //图片上传地址
          url: 'https://xxx.xxx.com/api/uploadpic/', 
          filePath: imgUrl,
          //上传名字,注意与后台接收的参数名一致
          name: 'imgUrl',
          //设置请求头
          header:{"Content-Type": "multipart/form-data"},
          //请求成功,后台返回自己服务器上的图片地址
          success: (uploadFileRes) => {
            console.log('uploadFileRes',JSON.parse(uploadFileRes.data));   
            //处理数据
            const path=JSON.parse(uploadFileRes.data)
            //赋值,前端渲染
            this.baseFormData.photo=path.imgUrl
          }
        });
      }, 
    }  
  }

图片展示

案例二(上传多张图片)

<template>
  <view class="container example">
    <uni-forms ref="baseForm" :modelValue="baseFormData" :rules="rules" label-position="top">
      <uni-forms-item label="图片上传">
        <uni-file-picker
         v-model="imageValue"
         fileMediatype="image" 
         mode="grid" 
         @select="select"   
         @delete="delIMG"
         limit="9"></uni-file-picker>
      </uni-forms-item>
    </uni-forms>
  </view>
</template>
<script>
  export default {
    data() {
      return {
        imgURL:'',
        //图片
        imageValue:[],
      };
    },
    methods:{
      //图片上传
      select(e){
        const tempFilePaths = e.tempFilePaths;
        const imgUrl=tempFilePaths[0]
        uni.uploadFile({
          url: 'https://xxx.xxx.com/api/uploadpic2/', 
          filePath: imgUrl,
          name: 'imgUrl',
          header:{"Content-Type": "multipart/form-data"},
          success: (uploadFileRes) => {
            console.log('uploadFileRes',JSON.parse(uploadFileRes.data));
            let path=JSON.parse(uploadFileRes.data)
            //后端返回的地址,存入图片地址
            this.imageValue.push({
              url:this.imgURL+path.imgUrl,
              name:''
            })
            console.log('imageValue',this.imageValue)
          }
        });
      },
      //图片删除
      delIMG(e){
        console.log('456',e)
        const num = this.imageValue.findIndex(v => v.url === e.tempFilePath);
        this.imageValue.splice(num, 1);
      }
    },
    onLoad() { 
      //全局定义的图片访问地址前缀
      this.imgURL=this.$imgURL
    }
  }
</script>

到此这篇关于uni-file-picker文件选择上传的文章就介绍到这了,更多相关uni-file-picker文件上传内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 前端使用URL API实现高效的URL解析

    前端使用URL API实现高效的URL解析

    在现代Web开发中,URL是前端和后端交互的核心载体,本文将深入探讨如何利用URL API实现URL的解析,构建和操作,希望对大家有一定的帮助
    2025-04-04
  • 浅谈layui分页控件field参数接收对象的问题

    浅谈layui分页控件field参数接收对象的问题

    今天小编就为大家分享一篇浅谈layui分页控件field参数接收对象的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • Bootstrap 按钮下拉菜单的实现示例

    Bootstrap 按钮下拉菜单的实现示例

    本文主要介绍了Bootstrap 按钮下拉菜单的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 一文带你理解JavaScript 观察者模式

    一文带你理解JavaScript 观察者模式

    观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,本文将带你详细了解JavaScript 观察者模式,,需要的朋友可以参考下
    2023-05-05
  • Express框架Router Route Layer对象使用示例详解

    Express框架Router Route Layer对象使用示例详解

    这篇文章主要为大家介绍了Express框架Router Route Layer对象使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 仿谷歌主页js动画效果实现代码

    仿谷歌主页js动画效果实现代码

    昨天看到谷歌的主页上出现了几个动画,发现不是flash做的,而是用js+图片实现的!今天把拷贝到的图片,用js实现了动画效果!
    2013-07-07
  • JS获取本地地址及天气的方法实例小结

    JS获取本地地址及天气的方法实例小结

    这篇文章主要介绍了JS获取本地地址及天气的方法,结合实例形式总结分析了javascript通过浏览器、第三方API实现获取本地地址与天气的相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • 简单JS自动提示文本框代码

    简单JS自动提示文本框代码

    为了满足用户的方便,提供良好的自动提示功能就成为定级公司努力方向。废话少说,看例子
    2012-01-01
  • 用JavaScrpt实现文件夹简单轻松加密的实现方法图文

    用JavaScrpt实现文件夹简单轻松加密的实现方法图文

    电脑里经常会存储着重要文件,这些文件需要进行加密,有许多方法来实现。但如果想对一个文件夹里的所有文件都进行加密,数量少还可以,要是数量多岂不是得把人累死?
    2008-09-09
  • leaflet的开发入门教程

    leaflet的开发入门教程

    leaflet是领先的开源JavaScript库为移动设备设计的互动地图。接下来通过本文来给大家介绍下leaflet的开发入门教程,需要的朋友可以参考下
    2016-11-11

最新评论