• elupload上传多张图片可预览 压缩


    原文链接:https://blog.csdn.net/qq_45331969/article/details/124835563

    项目里面涉及图片上传的功能,要图片可以预览,上传的时候图片大了要做压缩
    图片上传以及预览
    <Form-item label="图片详情" prop="imageUrl"> // Form-item 做了图片必传校验;不需校验不用写
    <el-upload
    class="avatar-uploader"
    :action="action" // 必选参数,上传的地址
    :headers="headers"
    list-type="picture-card" // 照片墙
    name="file"
    :on-preview="handlePictureCardPreview" // 预览
    :on-remove="handleRemove" // 删除图片
    :on-success="handleSuccess" // 上传成功的回调函数
    :before-upload = "beforeUpload" // 图片上传前的钩子函数
    v-model="formItem.imageUrl" // 与检验绑定,不需校验不用写
    >
    <i class="el-icon-plus"></i>
    </el-upload>
    // 预览弹窗区域
    <el-dialog :visible.sync="dialogVisible">
    <img width="100%" :src="formItem.imageUrl">
    </el-dialog>
    </Form-item>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // 引入image-conversion(图片压缩) 方式一:
    const imageConversion = require("image-conversion");
    // 方式二: import imageConversion from 'image-conversion'
    export default {
    data(){
    dialogVisible: false,
    formitem:{
    imageUrl: '' 单张图片地址
    },
    allImgUrl: [] // 所有图片上传成功返回的地址集合
    }
    methods: {
    handleSuccess(res) {
    const { code, data } = res
    if (code == '0000' && data.url) {
    this.allImgUrl.push(data.url)
    }
    this.formItem.imageUrl = data.url
    },
    // 图片预览
    handlePictureCardPreview(file) {
    this.formItem.imageUrl = file.url;
    this.dialogVisible = true;
    },
    // 删除图片
    handleRemove(file, fileList) {
    let removeUrl = file.response.data.url
    this.allImgUrl = this.allImgUrl.filter(item => item != removeUrl)
    },
    // 上传前做压缩
    beforeUpload(file) {
    return new Promise((resolve, reject) => {
    let isLt2M = file.size / 1024 / 1024 < 2 // 判定图片大小是否小于2MB
    if (isLt2M) {
    resolve(file)
    }
    // console.log('file', file) // 压缩到400KB,这里的400就是要压缩的大小,可自定义
    // imageConversion是第三方插件,要单独安装
    imageConversion.compressAccurately(file, 400).then(res => {
    // console.log('res', res)
    resolve(res)
    })
    })
    },
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    安装image-conversion包

    npm install image-conversion --save 或者 yarn add image-conversion – save
    这样就实现了图片的自动压缩功能,这个组件还有一些其他功能,使用的时候如果有其他需求,可以看下文档
    网址
    element-ui官网图片上传upload

  • 相关阅读:
    关于webpack升级过后不能打包的问题;
    数组的一些理解
    .NET(C#):使用Win32Exception类型处理Win32错误代码
    托管代码和非托管代码
    托管DLL和非托管DLL的区别
    C#实现Dll(OCX)控件自动注册的两种方法(转)
    Com组件和Dll文件区别
    C#创建COM组件
    ajaxFileUpload插件上传文件 返回 syntaxError :unexpected token
    jquery插件--ajaxfileupload.js上传文件原理分析
  • 原文地址:https://www.cnblogs.com/fswhq/p/16743694.html
Copyright © 2020-2023  润新知