javascript oss put base64 出现图片格式损坏 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

javascript oss put base64 出现图片格式损坏

呆呆大笨熊 2017-11-29 17:56:25 1952

···javascript
function (base64) {

      self.editor.focus()
      console.log(base64)

      let base = window.atob(base64.replace(/^.*?,/, ''))
      console.log(base)

      getOssSts().then(response => {
        let client = new OSS.Wrapper({
          accessKeyId: response.data.AccessKeyId,
          accessKeySecret: response.data.AccessKeySecret,
          stsToken: response.data.SecurityToken,
          endpoint: process.env.ENDPOINT,
          bucket: process.env.BUCKET
        })
        client.put(self.objectKey, new Buffer(base)).then(function (result) {
          self.onUploadSuccess(result.res)
          console.log(result)
        }).catch(function (err) {
          console.log(err)
        })
        console.log(response)
      })
    })
JavaScript 前端开发 对象存储
分享到
取消 提交回答
全部回答(2)
  • 呆呆大笨熊
    2019-07-17 21:46:05
    已采纳

    https://yq.aliyun.com/articles/253170?spm=5176.100240.searchblog.9.8tMWIb 参考这篇文章

    // Convert a base-64 string to a byte array

      base64ToBytes (base64) {
        // Use browser-native function if it exists
        if (typeof atob === 'function') return this.stringToBytes(window.atob(base64))
        // Remove non-base-64 characters
        base64 = base64.replace(/[^A-Z0-9+/]/ig, '')
        var bytes = []
        for (var i = 0; i < base64.length; i++) {
          switch (i % 4) {
            case 1:
              bytes.push((base64map.indexOf(base64.charAt(i - 1)) << 2) |
                (base64map.indexOf(base64.charAt(i)) >>> 4))
              break
            case 2:
              bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0xF) << 4) |
                (base64map.indexOf(base64.charAt(i)) >>> 2))
              break
            case 3:
              bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0x3) << 6) |
                (base64map.indexOf(base64.charAt(i))))
              break
          }
        }
        return bytes
      },
      stringToBytes (str) {
        var bytes = []
        for (var i = 0; i < str.length; i++) {
          bytes.push(str.charCodeAt(i))
        }
        return bytes
      }
    

    一定要转成base64ToBytes

    0 0
  • 游客3ag252bcsj33a
    2019-07-17 21:46:06

    老哥 base64map 是什么啊??? 同样的问题,急急急急

    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题