IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> uniapp 图片上传 删除 -> 正文阅读

[JavaScript知识库]uniapp 图片上传 删除

uniapp我的示例:如下

在这里插入图片描述
点击加号图片:选择上传类型:图片或者文件
在这里插入图片描述
上传的图片可以删除
在这里插入图片描述
在这里插入图片描述
这是界面上的一系列操作,接下来我们来看如何代码实现吧

一、界面代码:展示图片

<view class="title">
				<font class="leftTitle">文件图片</font>
			</view>
			<view class="flex-wrap">
			 //循环显示上传的图片(imgArr这是放上传成功的数组)
							<view class="imgwrap" v-for="(item,index) in imgArr">
					 //放一个删除的标识在图片右上角
							<image src="../../static/into_delete.png" class="iconfont icon-guanbi1" @click="closeImg(index)"></image>
							<image class="img" style="width: 100%;height: 100%;"  :src="getFlieName(item)">
							</image>
							</view>
							// 默认上传的图片
							<image class="img" src="../../static/submit_upload.png" @click="chooseVideoImage" style="width: 120px;height: auto;" mode="widthFix"></image>
						</view>

二、样式代码

.flex-wrap {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}
.imgwrap {
  position: relative;
  width: 100px;
  height: 100px;
  margin-right: 18upx;
  margin-bottom: 20upx;

  .iconfont {
    width: 16px;
    height: 16px;
    color: #eee;
    position: absolute;
    top: -20upx;
    right: -20upx;
    z-index: 1;
    cursor: pointer;
  }
}

逻辑代码:点击上传图片,先选择上传类型

  // 弹框
    chooseVideoImage() {
      uni.showActionSheet({
        title: "选择上传类型",
        itemList: ['图片', '文件'],
        success: (res) => {
          // console.log(res)
          if (res.tapIndex == 0) {
            this.uploadImg() //图片上传
          } else {
            this.uploadFile() //文件上传
          }
        }
      })
    },

写了一个上传的公共方法(都是调用同一个上传接口) 界面引入:
是图片上传就走图片上传方法、文件上传就走文件上传方法,

import httpTypes from '@/utils/http-types'

/utils/http-types文件内容如下:

import baseurl from './config.js' //公共接口地址 获取请求地址(你自己项目的IP地址)
 
var token   //获取token 我们项目接口需要token验证 所以拿到token
	uni.getStorage({
		key: 'storage_key',
		success: function (res) { 
			token = JSON.parse(res.data).token
		}
	});


// 上传图片封装
function uploadFile(obj) {
	console.log(obj,'obj')// 先看看你传过来的文件格式 然后根据后端需求传哪些参数
	let url = baseurl + '/file/upload?fileName='+obj.filePath.name;  //服务器地址
	// alert(url)
	let filePath = obj.filePath.path;   //要上传文件资源的路径。
	let formData = obj.formData || {'user': 'test'};
	let success = obj.success;
	let name = obj.name || 'filePath';  //文件对应的 key 
	let method = obj.method || 'POST';  //默认post请求
	let fail = obj.fail;
	let complete = obj.complete;
	// console.log(filePath,'filePath')
	// 这里请求后端 
	uni.uploadFile({
		url: url, 
		filePath:filePath,
		name: 'file',
		formData:{'user': 'test','file':filePath},
		header: {
			userAgent: 1,
			Authorization: token
		},
		success: function(res) {
			success(res)
		},
		fail: function(v){
			fail(v)},
		complete: function(v){
			complete(v)},
	})
}
export default {
	request: request,
	uploadFile: uploadFile
};






图片上传方法和文件上传方法、选择类型的时候调用

 // 图片上传
    uploadImg() {
      let that = this
      uni.chooseImage({
        count: 9, //上传图片的数量 
        sizeType: ['copressed', 'original'], //原图货压缩图
        sourceType: ['album', 'camera'], //相册或者拍照
        success: function (res) {
          const filename = res.tempFiles[0].name
          const tempFilePaths = res.tempFiles;
          uni.showLoading({
            title: "上传中",
            mask: true
          })
          httpTypes.uploadFile({ //上传服务器
            filePath: tempFilePaths[0],
            success: (res) => {
              let arr = JSON.parse(res.data); //转换格式
              let imgurl = arr.data
              that.imgArr.push(imgurl) //push进数组
              console.log(that.imgArr, 'that.imgArr')
            },
            fail: (res) => {

            },
            complete: (res) => {
              uni.hideLoading()
            }
          });
        }
      });
    },
    // 文件
    uploadFile(e) {
      let that = this
      uni.chooseFile({
        count: 9, //上传的数量
        extension: ['.docx', '.doc', '.ppt', 'xlsx'],
        success: function (res) {
          const filename = res.tempFiles[0].name
          const tempFilePaths = res.tempFiles;
          httpTypes.uploadFile({ //上传服务器
            filePath: tempFilePaths[0],
            success: (res) => {
              let arr = JSON.parse(res.data); //转换格式
              let imgArr = arr.data
              that.imgArr.push(imgArr) //push进数组
            },
          });
        }
      });
    },

上传成功之后 界面显示要判断一下是图片类型还是文件类型,文件类型的话直接显示本地Excel的一个默认图片类型 不需要显示文件,图片类型的话 拿到地址显示

 // 判断是否是文件
    getFlieName(fileName) {
      console.log(fileName, 'fileName')
      if (this.isImgFile(fileName)) {
        return this.baseUrl + '/file/download?filePath=' + fileName
      } else {
        return '../../static/excel.png'
      }
    },
    isImgFile(fileName) {
      // console.log(fileName, 'fileName')
      //后缀获取
      let suffix = '';
      // 获取类型结果
      let result = '';
      const flieArr = fileName.split('.');
      suffix = flieArr[flieArr.length - 1];
      if (suffix != "") {
        suffix = suffix.toLocaleLowerCase();
        // 图片格式
        const imglist = ['png', 'jpg', 'jpeg', 'bmp', 'gif'];
        // 进行图片匹配
        result = imglist.find(item => item === suffix);
        if (result) {
          return true;
        }
      }
      return false;
    },

上传成功之后也可以操作删除,删除这里是直接界面移除

 // 删除图片
    closeImg(index) {
      var that = this;
      uni.showModal({
        title: '提示',
        content: '是否删除当前图片',
        success: function (res) {
          if (res.confirm) {
            that.imgArr.splice(index, 1);
          } else if (res.cancel) {
            console.log('用户点击取消');
          }
        }
      });
    },
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 07:59:00  更:2022-05-08 07:59:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:38:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码