首页 > 其他分享 >vue3 uniapp 上传图片

vue3 uniapp 上传图片

时间:2024-08-12 16:49:48浏览次数:10  
标签:uniapp const url data fileList item vue3 uni 上传

直接上代码
<uni-file-picker fileMediatype="image" @select="selectFile"  @delete="deleteFile"  v-model="data.fileList"></uni-file-picker>
<view class="sub" @click="submit()">提交</view>
<script setup>

const data = reactive({
  fileList:[]
})

const submit = () => {
  let list = []
  if(data.fileList.length){
    data.fileList.forEach(z=>{
      if(z.uuid){
        list.push(z)
      }
    })
  }
  uploadImages(list)
}

const uploadImages = async imagePaths => {
    for (let item of imagePaths) {
        if(!item.id){
            await uploadImage(item);
        }
    }
    showToast('操作成功')
    setTimeout(() => {
            uni.redirectTo({ url :`/pages/xxx`})
        }, 500)
}

 

const uploadImage =(item) =>{
  return new Promise((resolve, reject) => {
  // 这里是上传图片的代码,比如使用uniapp的uni.uploadFile
  uni.uploadFile({
    url: process.env.VUE_APP_BASE_URL + '/resource/oss/endpoint-biz/put-file-attach',
    filePath: item.url,
    name: 'file',
    formData: {
      sourceId: data.sourceId,
      sourceType: 5,
      files: item.url
    },
    header: {
      'content-type': 'multipart/form-data',
      Authorization: `Bearer ${uni.getStorageSync('access_token')}`,
      'Tenant-Id': uni.getStorageSync('Tenant-Id'),
    },
    success: (uploadFileRes) => {
      resolve(uploadFileRes);
    },
    fail: (error) => {
      reject(error);
      }
    });
  });
}

//选择上传
const selectFile = e => {
  data.uploadStatus = true //如果有新的上传更改下状态(可能编辑图片)
  if(!data.fileList.length){
    data.fileList = e.tempFiles
  }else {
    data.fileList = [...data.fileList, ...e.tempFiles];
  }
}
//删除
const deleteFile = e => {
  const num = data.fileList.findIndex(v=> v.url == e.tempFilePath);
  data.deletePath.push(e.tempFilePath)
  data.fileList.splice(num, 1);
}

</script>

                                     

 

标签:uniapp,const,url,data,fileList,item,vue3,uni,上传
From: https://www.cnblogs.com/yd-MM/p/18355224

相关文章

  • Vue3+vite+axios+.net api 配置
    exportdefaultdefineConfig({plugins:[vue()],resolve:{alias:{"@":fileURLToPath(newURL("./src",import.meta.url)),},},server:{host:"0.0.0.0",open:true,//启动项目自动弹出浏览器port:&qu......
  • vue3面试题
    1.Vue3.0里为什么要用ProxyAPI替代definePropertyAPI?——响应式优化(高频,重点!!!)Vue更新的重点。definePropertyAPI的局限性最大原因是它只能针对单例属性做监听。Vue2中的响应式实现正是基于defineProperty中的descriptor,对data中的属性做了遍历+递归,为每个属......
  • SAP EXCEL数据上传代码
    *---获取数据DATA:LT_EXCELTYPETABLEOFALSMEX_TABLINE,"具有Excel数据的表行LV_INDEXTYPEI."项目位置*&---读取EXCEL到内表CALLFUNCTION'ALSM_EXCEL_TO_INTERNAL_TABLE'EXPORTINGFILENAME......
  • 038.Vue3入门,使用keep-alive让组件保持存活
    1、App.vue代码如下:<template><button@click="change">切换组件</button><p></p><keep-alive><component:is="tabComponent"></component></keep-alive></template><scr......
  • 037.Vue3入门,动态组件
    1、App.vue代码如下:<template><component:is="tabComponent"></component><button@click="change">切换组件</button></template><script>importChild1from"./view/Child1.vue"importChi......
  • 036.Vue3入门,组件的生命周期
    1、App.vue代码如下:<template><div><h3>主页面</h3><button@click="change">改变</button></div></template><script>exportdefault{beforeCreate(){console.log('beforeCreate&#......
  • bugbountyhunter scope BARKER:第十滴血 存储型 Storage Cross-Site Scripting XSS 添
    登录后点击MemberDogs,Addyourdog头像处可以上传SVG图片检查xsspayload:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSSInjection#xss-in-files使用SVG进行图片上传,发现SVG文件上传成功并返回图片地址poc:https://cfceb12f2bfd-sec875.a.barker......
  • 034.Vue3入门,插槽Slot中同时显示主页面和插槽页面的内容
    1、App.vue代码:<template><div><h3>主页面</h3><Slot001v-slot="slotProps"><h4>{{msg}}==={{slotProps.msg}}</h4></Slot001></div></template><script>i......
  • 035.Vue3入门,使用具名插槽Slot中,同时显示主页面和多个插槽页面内容
    1、App.vue代码如下:<template><div><h3>主页面</h3><Slot001><template#s1="slotProps"><h4>{{msg}}==={{slotProps.msg1}}</h4></template><template#s2......
  • 033.Vue3入门,多个插槽Slot的命名调用和#号简写
    1、App.vue代码如下:<template><div><h3>插槽学习</h3><Slot001><!--插槽1--><templatev-slot:s2><p>{{msg1}}</p></template><!--插槽2--><......