3***@qq.com
3***@qq.com
  • 发布:2019-06-14 10:35
  • 更新:2021-01-18 16:59
  • 阅读:3703

手机APP 图片转64位不行啊。pathToBase64编码不行啊

分类:uni-app

我后台是.net写的一般处理程序,然后是uni-app写的上传图片转码,是选择手机相册里的图片转码的,,
byte[] images1 = Info.img1; //img1是传的64位编码

我看了手机选择的相册图片路径是这个,,file:///storage/emulated/0/Pictures/Screenshots/Screenshot_20190613-122520.jpg
然后转码是不是有问题?

我传了js上去,是不是这个js写的有问题“”?

提示错误。。。
输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。

这个对于电脑上网页访问后台是正常,但是就是手机APP访问后台就是不行。。。。一直提示这个错误。。

手机选择相册的图片:
uni.chooseImage({
success: (chooseImageRes) => {
const tempFilePaths = chooseImageRes.tempFilePaths;
console.log(tempFilePaths[0]);
}
});
file:///storage/emulated/0/Pictures/Screenshots/Screenshot_20190613-122520.jpg

                                           pathToBase64(_self.img1)  
                            .then(base64 => {  
                                console.log(base64)  
                            const requestTask = uni.request({  
                                    url: 后台url, //仅为示例,非真实的接口地址  
                                    data: {  
                                        img1: base64.toString().replace('data:image/png;base64,', '').replace(  
                                            'data:image/jpeg;base64,', ''),  
                                        ProID: datalist.Info  

                                    },  
                                    method: "POST",  
                                    header: {  
                                        'content-type': 'application/json'  
                                    },  
                                    success: function(res) {  
                                        console.log(JSON.stringify(res));  

提示错误。。。
输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。

                                    }  
                                });  
                            })  
                            .catch(error => {  
                                console.error(JSON.stringify(error))  
                            })
2019-06-14 10:35 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

这个base64能在手机的image组件展示不?
如果不能,说明手机型号系统等,把图片作为附件上传(请勿压缩)

  • 3***@qq.com (作者)

    可以啊。。。。

    2019-06-14 10:59

  • 3***@qq.com (作者)

    就是后台不知道为什么就是识别不了

    2019-06-14 11:00

  • DCloud_UNI_GSQ

    回复 3***@qq.com: 在小程序端和H5端,同样转换这张图,看生成的base64有区别不

    2019-06-14 11:04

  • 2***@qq.com

    回复 DCloud_UNI_GSQ: 在真机调试的时候是可以的,为什么打包之后违法在image组件显示不了,安卓app端

    2020-07-06 10:33

小殊90

小殊90

uni.chooseImage({    
    count:1,    
    sizeType: ['compressed'],    
    success: function (res) {    
        uni.getFileSystemManager().readFile({    
            filePath: res.tempFilePaths[0], //选择图片返回的相对路径    
            encoding: 'base64', //编码格式    
            success: v=> { //成功的回调    
                 let base64 =  v.data // 返回的是没有 'data:image/jpeg;base64,'头的数据, 有需要可自行追加上                                   
             }    
        })    

    }    
})
  • 1***@qq.com

    APP端不行

    2021-01-13 10:40

  • 小殊90

    回复 1***@qq.com: 这个无法贴代码,我新增了一个评论贴了代码

    2021-01-18 17:00

小殊90

小殊90

支持 H5 APP 小程序,

<template>  
    <view >  
        <button @click="choose">选择图片</button>  
    </view>  
</template>
<script>  
    export default {  
        data() {  
            return {}  
        },  
        onLoad() {},  
        methods: {  
            choose(){  
                let _this = this  
                uni.chooseImage({      
                    count:1,      
                    sizeType: ['compressed'],      
                    success: function (res) {  
                        //#ifdef H5  
                         var img = new Image()  
                         img.src = res.tempFilePaths[0]  
                         img.onload = function(){  
                            let imgBase64 = _this.H5Base64(img)  
                            console.log(imgBase64)  
                         }  

                        //#endif  

                        //#ifdef MP-WEIXIN  
                        // uni.getFileSystemManager 适用 微信小程序平台、字节跳动小程序平台、QQ小程序平台  
                         uni.getFileSystemManager().readFile({      
                                filePath: res.tempFilePaths[0], //选择图片返回的相对路径      
                                encoding: 'base64', //编码格式      
                                success: v=> { //成功的回调      
                                  // 返回的是没有 'data:image/jpeg;base64,'头的数据, 有需要可自行追加上  
                                   let base64 =  v.data   
                                    console.log(base64)  
                                 }      
                          })  
                        //#endif  

                        //#ifdef APP-PLUS  
                        let path = _this.getLocalFilePath(res.tempFilePaths[0])  
                        plus.io.resolveLocalFileSystemURL(path, function(entry) {  
                            entry.file(function(file) {  
                                var fileReader = new plus.io.FileReader()  
                                fileReader.onload = function(data) {  
                               console.log(data.target.result)  
                                    uni.showModal({  
                                        content: data.target.result  
                                    })  
                                }  
                                fileReader.onerror = function(error) {  
                               console.log(error)  
                                }  
                                fileReader.readAsDataURL(file)  
                            }, function(error) {  
                                console.log(error)  
                            })  
                        }, function(error) {  
                            console.log(error)  
                        })  
                        //#endif  
                    }      
                })  
            },  
            getLocalFilePath(path) {  
                if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) {  
                    return path  
                }  
                if (path.indexOf('file://') === 0) {  
                    return path  
                }  
                if (path.indexOf('/storage/emulated/0/') === 0) {  
                    return path  
                }  
                if (path.indexOf('/') === 0) {  
                    var localFilePath = plus.io.convertAbsoluteFileSystem(path)  
                    if (localFilePath !== path) {  
                        return localFilePath  
                    } else {  
                        path = path.substr(1)  
                    }  
                }  
                return '_www/' + path  
            },  
            H5Base64(img){  
                var canvas = document.createElement('canvas')  
                canvas.width = img.width  
                canvas.height = img.height  

                var c2x = canvas.getContext('2d')  
                c2x.drawImage(img, 0, 0)  

                var ext = img.src.substring(img.src.lastIndexOf('.')+1).toLowerCase()  
                return canvas.toDataURL("image/"+ext)  
            }  

        }  
    }  
</script>  

<style>  

</style>

该问题目前已经被锁定, 无法添加新回复