非来之来 2018-10-16 08:31 采纳率: 0%
浏览 1002

微信浏览器js sdk上传照片在IOS端上传的照片在服务端获取的后缀名不正确

微信浏览器上传文件用原生input type=file multiple 在android手机中无法选择多张照片所以使用微信js sdk来上传照片

 function chooleImg(){
        //拍照或从手机相册中选图接口
        wx.chooseImage({
            count: 9, // 默认9
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ['album'],//['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
            defaultCameraMode: "batch", //表示进入拍照界面的默认模式,目前有normal与batch两种选择,normal表示普通单拍模式,batch表示连拍模式,不传该参数则为normal模式。(注:用户进入拍照界面仍然可自由切换两种模式)
            success: function (res) {
                var localIds = res.localIds; // 返回选定照片的本地ID列表,
                // andriod中localId可以作为img标签的src属性显示图片;
                // 而在IOS中需通过上面的接口getLocalImgData获取图片base64数据,从而用于img标签的显示

                for(var i=0;i<res.localIds.length;i++){
                    //获取本地图片接口
                    wx.getLocalImgData({
                        localId: res.localIds[i], // 图片的localID
                        success: function (res) {
                            var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
                            var _domObj = $(_html);
                            if(IsIOS()){
                                $(_domObj).find("img").attr("src", res.localData);
                            }else{
                                $(_domObj).find("img").attr("src", 'data:image/jpeg;base64,'+res.localData);
                            }

                            $("#pic-view-container").append(_domObj);
                        }
                    });
                }

            },
            fail:function(resp){
                console.log(resp)
            }
        });
    }

因为android和ios返回的base64码有点不同所以加了个头,这样能在页面直接预览了,然后再把base64转blob传到后台

 $(ls).each(function(i,e){
                var base64 = $(e).attr("src");
                var blob = dataURLtoBlob(base64);
                formData.append("files", blob);
            })

在后台获取后缀名的时候android设备是正常的而IOS设备获取的后缀名变成**_ .jgp ** 我没有写错不是 **.jpg_**

var file = Request.Files[i];
_int _index = file.FileName.LastIndexOf('.');
var extend = _index >= 0 ? file.FileName.Substring(_index) : "";
var imgName = Guid.NewGuid() + "." + extend;_

这是上传的结果截图,左边是文件,右边是数据库

图片说明

有没有哪位大佬知道这是上面原因,想不出来到底是哪里问题,求助!!!

  • 写回答

1条回答 默认 最新

  • Qshu 2018-10-16 09:25
    关注

    微信js上传图片,返回localIds直接替换src苹果安卓都没问题啊

    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程