uniapp vue3.0+TS 上传单张或多张图片,并且能删除和预览。

编程入门 行业动态 更新时间:2024-10-26 15:26:30

uniapp vue3.0+TS 上传单张或<a href=https://www.elefans.com/category/jswz/34/1769936.html style=多张图片,并且能删除和预览。"/>

uniapp vue3.0+TS 上传单张或多张图片,并且能删除和预览。

一、uniapp vue3.0+TS 上传单张或多张图片,并且能删除和预览。

效果:人菜话不多 先上效果:

二、代码

1.HTML 上传图片相关代码

代码如下:

<template><view class="images_box"><view class="imgBox" v-for="(item, index) in fileList" :key="index"><img class="image" :src="item.url" alt="" @click="previewImg(index)" /><img @click.stop="delImges(item, index)" class="close" src="@/static/image/base/close.png" alt="删除" /></view><view class="iconBox" @click="upload"><u-icon name="plus" size="28" color="#438BEF"></u-icon></view></view>
</template>

2.TS上传图片相关代码

代码如下:

<script setup lang="ts">
import { ref, reactive } from "vue";
import { onLoad } from "@dcloudio/uni-app";
import { examine } from "@/api";const fileList = ref<any>([]);
const imgList = ref<any>([]);
const formState = reactive<any>({conclusion: "", suggestion: "", task_id: null
});const upload = () => {uni.chooseImage({count: 9, // 默认9mediaType: ["image"],sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有sourceType: ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有success: function (res: any) {fileList.value = fileList.value.concat(res.tempFiles); //concat追加到数组for (let file in fileList.value) {up_img(fileList.value[file]);}},});
};
const up_img = (file: any) => {uni.uploadFile({url: '/',filePath: file.path,name: 'files',header: {"Content-Type": "multipart/form-data"},success: (res: any) => {let obj = JSON.parse(res.data);imgList.value = [...imgList.value,{type: obj.files[0].type,size: obj.files[0].size,name: obj.files[0].name,url: 'https://prod.XXXXXX/XXXX/XXXX/XXXXX/' + obj.files[0].name,}];fileList.value = imgList.valueuni.showToast({title: '上传成功',icon: "success",});},fail: (res: any) => {uni.showToast({title: '上传失败',icon: "error",});}})
};
//删除图片
const delImges = async (rowItem: any, index: number) => {fileList.value.forEach((item: any) => {if (item.name == rowItem.name) {fileList.value.splice(index, 1)}})
};
// 点击图片预览
const previewImg = (index: number) => {let imgsArray = fileList.value.map((item: any) => {return item.url})uni.previewImage({urls: imgsArray,current: index,indicator: 'number',loop: true})
}
onLoad((options: any) => {formState.task_id = Number(options.taskId)
});
</script>

3.CSS 上传图片相关代码

代码如下:

 .images_box {display: flex;justify-items: flex-start;flex-wrap: wrap;.imgBox {width: 120rpx;height: 120rpx;position: relative;margin: 20rpx 20rpx 0 0;.image {width: 100%;height: 100%;border-radius: 10rpx;}.close {width: 30rpx;height: 30rpx;position: absolute;top: -15rpx;right: -15rpx;}}.iconBox {width: 120rpx;height: 120rpx;display: flex;align-items: center;justify-content: center;border-radius: 10rpx;border: 1px dashed gray;box-sizing: border-box;margin-top: 20rpx;}}

更多推荐

uniapp vue3.0+TS 上传单张或多张图片,并且能删除和预览。

本文发布于:2023-12-08 03:38:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1672246.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多张   上传   图片   uniapp   TS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!