0

之前的微信H5项目,现在需要接入到支付宝里面,诸如扫码、选择和预览图片的功能直接调用支付宝的jssdk都能实现,然而支付宝的jssdk并没有上传图片的功能,有做过支付宝H5开发的同仁知道解决办法么?

AlipayJSBridge.call('chooseImage', {
  sourceType: ['camera', 'album'],
  count: 9
}, function (result) {
  const { localIds, apFilePathsV2 } = result
  // 可以从result里面去到localIds和apFilePathsV2这两个有用的数组
  // localIds的子元素是一些随机的字符串
  // apFilePathsV2的元素则是类似于`https://resource/fe4f6db8d03426987eafbb85c5d9d900c.image`之类的字符串
  // 不同于微信jssdk,这里的localId不能用来预览图片,但是apFilePathsV2可以,不过也不知道apFilePathsV2还能用来做啥,翻遍文档没有找到任何说明
});

我看到支付宝jssdk的chooseImage接口说明 的后面有这一段:

获取localID后,如果使用uploadImage接口上传,此处publicDomain参数的值应和uploadImage接口的publicDomain参数值的保持一致。

感觉应该是有一个uploadImage接口的,但是文档里面也没用找到任何说明。


发现另外一个接口和chooseImage类似,而且功能更全面:

  AlipayJSBridge.call('photo', {
    dataType: 'dataURL',
    imageFormat: 'jpg',
    quality: 75,
    maxWidth: 500,
    maxHeight: 500,
    allowEdit: true,
    multimediaConfig: { // 可选,仅当该项被配置时,图片被传输至 APMultimedia
      compress: 2, // 可选,默认为4。 0-低质量,1-中质量,2-高质量,3-不压缩,4-根据网络情况自动选择
      business: "multiMedia" // 可选,默认为“NebulaBiz”
    }
  }, function (result) {
    const { dataURL, multimediaID } = result
  });

可以通过这个接口获取到图片的内容,以及一个叫multimediaID的东西,文档说:

multimediaID: 标识上传图片在APMultimedia中的identifier

可是APMultimedia又是什么??我能通过multimediaID干什么事情? 文档也找不到说明

查看全部 2 个回答

1

碰巧遇到了这个问题 以为支付宝应该也有uploadImage的接口的 然而我也是踏破铁鞋都找不到啊,不知道小哥哥你有没有解决呢?

推荐答案

1

已采纳

在一个版本略早的支付宝jssdk文档的pdf版本里面找到了这一段

ap.chooseImage(function(res){
    if(res.apFilePaths && res.apFilePaths.length > 0) {
        ap.uploadFile({
            url: '[请使⽤⾃⼰服务器地址]',
            fileType: 'image',
            fileName: 'file',
            filePath: res.apFilePaths[0],
            success: function() {
                ap.alert('上传成功');
            },
            fail: function() {
                ap.showToast('上传失败');
            }
        });
    }
});

看来还是得自己实现上传服务才行了。