收藏
回答

wx.chooseImage接口返回的图片url是手机还是远程?

要实现一个拍照过程中,断网重连还可以看到之前拍的照片 我这里做了一个简单demo 页面

<view class="container">

  <view class='img_body'>

    <view class='img_list'>

      <view class='img_li' wx:for="{{imglist}}" wx:key="{{index}}">

        <image src="{{item}}"></image>

      </view>

      <view class='addimg' bindtap='img_w_show'>

        <image src='../../img/add.png'></image>

      </view>

    </view>

  </view>

 

<button bindtap="toStorage">存储</button>

<button bindtap="tolook">查看

<view class='img_li' wx:for="{{newList}}" wx:key="{{index}}">

        <image src="{{item}}"></image>

      </view>

      </button>

  <view>{{}} </view>

</view> js

var list=[];

var list2=[];

Page({

  data: {

    imglist:[],

    newList:[],


  },

 img_w_show() {

    var _this = this;

    wx.chooseImage({

      count: 9, // 默认9

      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有

      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有

      success: function (res) {

        // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片

        var tempFilePaths = res.tempFilePaths;

        list = _this.data.imglist.concat(tempFilePaths);

        console.log("111111"+tempFilePaths)

        console.log(list[0]);

        _this.setData({

          imglist: _this.data.imglist.concat(tempFilePaths)

        })

      }

    })

  },

  toStorage() {

    // 获取用户数据存到本地

    const appInstance = getApp()

    console.log(list[0]);//打印用户信息

    list2=list;

    list=[];

    try {

      wx.setStorageSync('imglist', list2[0]);

      wx.getStorage({

        key: 'imglist',

        success: function(res) {

          console.log(res.data);

        },

      })

      //弹框提示

      wx.showToast({

        title: '存储本地缓存数据成功',

        icon: 'none',

        duration: 2000

      });

    } catch (e) {

      //弹框提示

      wx.showToast({

        title: '存储本地缓存数据失败,请检查相关配置,是否联网等',

        icon: 'none',

        duration: 2000

      });

    }

  },

  tolook(){

    var _this = this;

    _this.setData({

      newList: list2

    }),

    list2=[];

  }



})


操作如下图






这里的主要思想就是调用微信图片接口wx.chooseImage返回的url,

点击存储。就放在wx.setStorageSync里面,然后进行页面渲染, 但是我console出的url是个http://tmp/wxfb0ad0f51a836ae1.o6zAJs7t7QmyBKCtv7q9mCnkl77Y.jJ5Lj639Ka7gf04604f9827156ce9b8509eaec36ac00.png这种形式的不应该是网络http协议吗,也不是base64编码 为什么断网情况我的图片还能查看出来



回答关注问题邀请回答
收藏

4 个回答

  • !!!Σ(っ°Д°;)っ
    !!!Σ(っ°Д°;)っ
    2019-10-28

    微信小程序是沙盒模式,你只能读取到微信给你提供的指定路径下的文件。

    wx.chooseImage接口返回的图片地址是这个沙盒中的tmp文件夹下的图片,是临时图片。将在内存不足时被随机释放。

    如果你保存了wx.chooseImage接口返回的图片地址,只能保证在小程序本次打开并且未被销毁,并且内存充足的时候能够访问。

    如果需要反复读取,建议自己通过FileManager手动存储在沙盒下。但仍不能保证下次一定还能访问。


    2019-10-28
    有用
    回复 1
    • 杨不颓
      杨不颓
      2019-10-29
      好的,又涨知识了
      2019-10-29
      回复
  • 2019-10-23

    是本地的地址

    但不能通过浏览器访问

    2019-10-23
    有用
    回复 1
    • 杨不颓
      杨不颓
      2019-10-23
      嗯嗯,麻烦了
      2019-10-23
      回复
  • 杨不颓
    杨不颓
    2019-10-23


    在这里应该是从缓存中取值赋值

    2019-10-23
    有用
    回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-10-23

    这是本地的临时地址

    2019-10-23
    有用
    回复 7
    • 杨不颓
      杨不颓
      2019-10-23
      我看了文档也是说本地地址,但是本地地址能够在手机里面找到吗,就我发的url
      2019-10-23
      回复
    • 杨不颓
      杨不颓
      2019-10-23
      而且我把这个路径拿去电脑网址,报的dns域名解析失败,我记得这个错误是针对网路协议问题吧,感觉url不像是手机本地的路径形式,望解答
      2019-10-23
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-10-23回复杨不颓
      没找过
      2019-10-23
      回复
    • 杨不颓
      杨不颓
      2019-10-23回复o0o有脾气的酸奶
      还是十分感谢
      2019-10-23
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-10-23回复杨不颓
      在开发工具上是http://tmp开头,在手机上是wxfile://tmp开头,自己用wx.saveFile保存一个图片试试,自己去微信目录tencent/MicroMsg/wxafiles下面找找看
      2019-10-23
      回复
    查看更多(2)
登录 后发表内容
问题标签