无法使用NodeJS使用Google Photos API上传图像

编程入门 行业动态 更新时间:2024-10-10 11:19:33

无法使用NodeJS使用Google Photos API上传<a href=https://www.elefans.com/category/jswz/34/1771430.html style=图像"/>

无法使用NodeJS使用Google Photos API上传图像

我在NodeJS中内置了应用程序,应该使用google photos API将图片上传到google照片中对于身份验证部分,我正在成功完成操作,当我尝试上传图片时出现问题,但是我没有问题地收到上传令牌,但是当我尝试使用mediaItems:batchCreate时,它会返回:

"status": {
    "code": 3,
    "message": "Failed: There was an error while trying to create this media item."
  }

这是我的代码,将图像转换为base64:

var base64str = fs.readFileSync('1.jpg', 'base64');

这是我收到上传令牌的请求:

request({
method: 'post',
headers: {
'content-type' : 'application/octet-stream',
'Authorization': `Bearer ${userToken}`,
'X-Goog-Upload-File-Name' :  '1.jpg',
'X-Goog-Upload-Protocol' : 'raw'
},
url: ``,
rejectUnauthorized: false,
body: base64str
}, function(err,response,body) {
      console.log(body);
      });

到目前为止,我没有问题,因为(正文)响应是上传令牌,我收到了。现在,当我想转到步骤2来请求mediaItems:batchCreate时,代码是:

let reqObject = {
    newMediaItems: [
      {
        description: "Test Image Uploading",
        simpleMediaItem: {
        uploadToken: body //Body is the upload token received from prev request
        }
      }
    ]
  };
let reqObjectString = JSON.stringify(reqObject);

  request({
    method: 'post',
    headers: {
    'content-type' : 'application/json',
    'Authorization': `Bearer ${userToken}`,
    },
    url: `:batchCreate`,
    rejectUnauthorized: false,
    body: reqObjectString
  }, function(err,response,result) {
      console.log(result);
});

这里的预期结果应该是成功上传媒体,但我总是得到这个响应:

{
  "newMediaItemResults": [
    {
      "uploadToken": "CAISmQMASsyg4MwSgB2y46/QI2yAAfw/uSeHZaiwGaskaT9J3SEvOtBg4bkOb9Fd0WMhE5OML8aMJMGZWNyC3Di/woTjLGD/VJMtKBk7bg1ZyK5CA+92vk0mjUWVR2LQhhTkEs02aHRr6EkCER3rxk3AqkhC+bxTIViLerUeoKigdlqozrEJXyCLM5U+Eqjdidi0e0hEFeLqs8Yz0V8YpyWQnN+zZUp/+R4pVT9fPXUOyNlsTj5OcMLrtC3Z/W9YnKhQA0O8io8LtmMBJTf04v3YPEtoNvJTd+k5Ux7qWQYJCS60V1R+hPl76jlryos3gnVaaCxHGH/TIMmtwo2zDH+vXTyktMhr82hdMON3Mm2PCfSbJawCLuHSNND9vojO11FEs7LVXAfY1UDDzVXwv4VV8tG9F3tQVI8/4YlkR+KJUjaX6/E4ZFWx67E+swqh16HN1RXXU211eCl36mPxsX35IGPEwvhpZ89LKfk+NU1fVuHB+pNLMNQ+mZOkKs0v6VLcN+nyMpOwjAstg4QUSJdCP+virY1a2uGKwYJh",      
        "status": {
        "code": 3,
        "message": "Failed: There was an error while trying to create this media item."
      }

任何人都可以提供帮助,在此先感谢

回答如下:

您的评论绝对正确。 Google Photos API需要媒体为二进制格式,而不是base64格式。

我正在使用React.js和FileReader读取媒体。我不得不使用:

const reader = new FileReader()
reader.readAsArrayBuffer()

获取数组缓冲区,然后图像成功上传。

更多推荐

无法使用NodeJS使用Google Photos API上传图像

本文发布于:2024-05-07 12:18:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756210.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图像   上传   Google   NodeJS   API

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!