开发者社区> 问答> 正文

node.js的OSS上传图片在部分ios机型上无法上传

九寸夕暮rn 2018-09-06 11:17:34 707

H5中使用了node.js的图片上传功能,是用react写的,在Pc、安卓上均可正常上传,但部分ios机型无法上传,也没有报错,就是一直不响应结果一直转圈。代码如下:

Toast.loading('正在上传图片...',0);

    let OSS = require('ali-oss');
    let client = new OSS({
      region: 'oss-cn-shenzhen',
      //云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,部署在服务端使用RAM子账号或STS,部署在客户端使用STS。
      accessKeyId: '*****',
      accessKeySecret: '******',
      bucket: '*****',
      secure:true,
    });

    function dataURLtoFile(dataurl, filename) {
        let arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
          bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
        while(n--){
          u8arr[n] = bstr.charCodeAt(n);
        }
        return new File([u8arr], filename, {type:mime});
      }
      let file ;
      let file2 ;
      var names = `cert_font_${this.props.match.params.cus_name}_${this.props.match.params.cert_code}.png`;
        file = dataURLtoFile(this.state.certImag_font[0].url, names);
        var names2 = `cert_back_${this.props.match.params.cus_name}_${this.props.match.params.cert_code}.png`;
        file2 = dataURLtoFile(this.state.certImag_back[0].url, `cert_back_${this.props.match.params.cus_name}_${this.props.match.params.cert_code}.png`);

    const success = (result) => {
        this.props.history.goBack();
        Toast.hide();
        return result;
    }
    //下面的文件目录名称需要加上用户信息标识,如身份证等;
    async function put (aaaa) {
        try {
          let result = await client.put(`xinbao-guangda/${names}`,file);
          let result2 = await client.put(`xinbao-guangda/${names2}`,file2);
          console.log(result,result2);
          return success();
        } catch (e) {
            console.log(e); 
            Toast.fail('图片上传失败');
        }
      }
    put(this);
分享到
取消 提交回答
全部回答(2)
  • magics
    2019-07-17 23:03:52

    atob is not defined
    File is not defined
    怎么解决的?

    0 0
  • helax
    2019-07-17 23:03:52

    提工单咯,反应很快滴

    0 0
添加回答