首页 > 其他分享 >uniapp app上传图片并设置超过10m进行图片压缩

uniapp app上传图片并设置超过10m进行图片压缩

时间:2023-11-22 09:55:25浏览次数:37  
标签:uniapp const 10m res uploadFileRes tempFilePaths data chooseImageRes 图片

组件页面

<template>
    <view class="upload-wrapper">
        <view v-if="pictureUrl.length">
            <view class="preview" v-for="(item,index) in pictureUrl" :key='index' >
                <view >
                    
                </view>
                <image  :src="`${host}${item.accessFilePath}`"  mode="" v-if="item.accessFilePath">
                    
                </image>
                <image :src="`${host}${item}`" mode="" v-else></image>
                
                <view class="delete" @tap="deleteImg(index)">
                </view>
            </view>
        </view>
        <view class="img-wraper" v-if="!(pictureUrl.length ==6)" @tap="choosePicture">
            <image :src="image" mode=""></image>
        </view>
    </view>
</template>

点击添加图片

choosePicture() {
                const that = this;
                const value = getAuthorization();   //此方法是获取token的方法,按照自己的需求替换
                let Authorization = '';
                if (value) {
                    Authorization = value
                }
                uni.chooseImage({
                    count: 1, //图库里只能选择一张
                    sourceType: ['album','camera'], //可以使用相册或者是照相机
                    success: (chooseImageRes) => {
                        const tempFilePaths = chooseImageRes.tempFilePaths;
                        that.src = tempFilePaths[0]   //上传图片的路径,如后续有用可留存
                        const name = tempFilePaths[0].split('/').pop()
                        let imgLength = chooseImageRes.tempFilePaths.length
                        if(chooseImageRes.tempFiles[0].size > 10485760){     //判断是否大于10M   单位是大写B
                            uni.showToast({
                                title: '图片大于10MB无法上传',
                                icon: 'none',
                            })
                            return
                        }
                        let arr=0
                        chooseImageRes.tempFiles.forEach((item,index)=>{   //这里我之前的需求是一次可以选择多张,然后把这些都循环成一个数组,后来改了只能选一张,如果需求需要可留存
                            
                            arr +=item.size
                            
                        })
                        if(arr/1024>500){  //判断是否大于500kb  大于500Kb的图片才进行压缩
                            let promise = new Promise(function(resolve, reject) {
                                    chooseImageRes.tempFilePaths.map((value, index) => {
                                        uni.compressImage({
                                            src: value,
                                            height:"50%",
                                            width:"50%",
                                            quality:1,
                                            success: (res) => {
                                                   uni.getFileInfo({ //可以看压缩后的大小留着
                                                       filePath:res.tempFilePath,
                                                       success:(item)=> {
                                                       }
                                                   })
                                                that.compressedImgList.push(res.tempFilePath);
                                                if (index == imgLength - 1) {
                                                    resolve(that.compressedImgList);
                                                }
                                            },
                                            fail: (err) => {
                                                reject(err)
                                            }
                                        })
                                    })
                                })
                                promise.then((res)=>{
                                    uni.uploadFile({
                                        url: `${host}/zhyl/oss/uploadWatermark/jggl/repairPic`, //仅为示例,非真实的接口地址
                                        filePath: res[0], //这个就是地址 压缩前后的地址 that.compressedImgList.push这个是数组地址多个的
                                        name:'file',
                                        // fileName:name,
                                        header: {
                                            "Authorization": getAuthorization()
                                        },
                                        success: (uploadFileRes) => {
                                            if(uploadFileRes.statusCode==200){
                                                const data = JSON.parse(uploadFileRes.data)
                                                let dd=JSON.parse(uploadFileRes.data)
                                                that.pictureUrl.push(dd.data[0].accessFilePath)
                                                that.$emit('uploadImage',dd.data[0])
                                            }
                                        },
                                        fail:(res)=>{
                                            console.log(res);
                                        }
                                    });
                                })
                        }else{
                            that.compressedImgList= chooseImageRes.tempFilePaths  //如果不大于500那就是选择时候的图片地址这是个数组
                            uni.uploadFile({
                                url: `${host}/zhyl/oss/uploadWatermark/jggl/repairPic`, //仅为示例,非真实的接口地址
                                filePath:chooseImageRes.tempFilePaths[0] , //这个就是地址 压缩前后的地址 that.compressedImgList.push这个是数组地址多个的
                                name:'file',
                                header: {
                                    "Authorization": getAuthorization()
                                },
                                success: (uploadFileRes) => {
                                    
                                    if(uploadFileRes.statusCode==200){
                                        const data = JSON.parse(uploadFileRes.data)
                                        let dd=JSON.parse(uploadFileRes.data)
                                        that.pictureUrl.push(dd.data[0].accessFilePath)
                                        that.$emit('uploadImage',dd.data[0])
                                    }
                                },
                                fail:(res)=>{
                                    console.log(res);
                                }
                            });
                        }
                    
                            
                        
                    
                        
                        
                    }
                });
            },

 

标签:uniapp,const,10m,res,uploadFileRes,tempFilePaths,data,chooseImageRes,图片
From: https://www.cnblogs.com/prince11/p/17847223.html

相关文章

  • cxImage1图片显示(17)
    参考:https://www.cnblogs.com/liessay/p/5267221.html1]:   Picture:载入要显示的图片,也可从DEV自带IconLibrary库里选择2]:   Properties->Caption在没有内容的时候显示在图片框中间的文字 3]:   Properties->PopupMenuLayout->MenuItems可选择需要显示在......
  • uniapp使用第三方插件image-tools进行图片转base64
    最近做的这个项目原来是原生android开发的,然后图片上传功能是 前端获取图片->图片转成base64字符串(base64编码)->传递给服务器后端->服务器接受base64字符串数据->获取到的base64转成图片jpg(解码)->存入服务器,并写入数据库后来因为原生安卓太麻烦了,转成了uniapp进行开......
  • uniapp之安卓端pdf预览
    uniapp之安卓端pdf预览原理:将文件下载到本地,使用uniapi预览文件exportPDF(){ uni.downloadFile({ url:"http://192.168.1.237:9000/profile/statute/937820.pdf", success:res=>{ console.log(res) if(res.statusCode===200){ ......
  • UNIAPP返回上一页并参数 uni.$on、uni.$off、uni.$once 和 uni.$emit
    WPFPrism事件聚合器-订阅/发布事件https://www.cnblogs.com/douyuanjun/p/17788957.html结合JS理解更容易理解:https://www.cnblogs.com/douyuanjun/p/17465402.html//传参给上一页confirm:function(){ if(this.list.length>=1){ //选择观演人 uni.$emit('selectV......
  • 驾驶舱首页说明图片第二版
    用户增长: BI:经营:交付: ......
  • 220-jquery,将base64的图片,转为file文件,并通过$.ajax上传
    varbase64='';constblob=dataURLToBlob(base64);constfile=blobToFile(blob,'image.jpg');uploadImage(file);functiondataURLToBlob(base64){constparts=dataURL.split(';base64,');constcontentType=......
  • Linux mac 隐藏文件到图片
    maclinux将文件玩隐藏到图片中隐藏有一个图像文件image.jpg,以及一个叫做secret.zip的文件,其包含有加密信息,也是我们将要嵌入到image.jpg中的文件。最终,我将使用cat命令将secret.zip文件与图像文件(image.jpg)复合在一起并保存为ostechnix.jpg文件。更清晰的......
  • 驾驶舱首页说明图片库
       ......
  • 去掉uniapp程序中顶部返回按钮
    去掉uniapp程序中顶部返回按钮1.javascript"autoBackButton":false在小程序下生效,H5不生效{"path":"pages/donation/list","style":{"navigationBarTitleText":"公益捐款"......
  • TCP/IP & wireshark抓取QQ流量获取聊天图片
    TCP/IPTCP/IP体系的分层特点•TCP/IP开始仅仅是两个协议:TCP(TransferControlProtocol,传输控制协议)和IP(InternetProtocol,网际协议);后来,TCP/IP演变为一种体系结构,即TCP/IP参考模型。现在的TCP/IP已成为一个工业标准的协议集,它最早应用于ARPAnet。•与OSI参考模型不同,TCP/IP......