Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用firebase函数将图像上载到云存储错误_Javascript_Firebase_Google Cloud Storage_Google Cloud Functions_Firebase Storage - Fatal编程技术网

Javascript 使用firebase函数将图像上载到云存储错误

Javascript 使用firebase函数将图像上载到云存储错误,javascript,firebase,google-cloud-storage,google-cloud-functions,firebase-storage,Javascript,Firebase,Google Cloud Storage,Google Cloud Functions,Firebase Storage,我正在尝试将base64 jpeg图像上载到Firebase存储,我不知道出了什么问题。我不认为这是我的图像编码错误。 我正在尝试使用React Native(fetch API)将图像从用户的手机上载到firebase存储,以发送请求 index.js文件: const functions = require("firebase-functions"); const cors = require("cors")({ origin: true }); const fs = require("fs

我正在尝试将base64 jpeg图像上载到Firebase存储,我不知道出了什么问题。我不认为这是我的图像编码错误。 我正在尝试使用React Native(fetch API)将图像从用户的手机上载到firebase存储,以发送请求

index.js文件:

const functions = require("firebase-functions");
const cors = require("cors")({ origin: true });
const fs = require("fs");
const UUID = require("uuid-v4");

const gcconfig = {
projectId: "awsome-34343434343434",
keyFileName: "awsome.json"
};

 const { Storage } = require("@google-cloud/storage");
const storage = new Storage(gcconfig);

exports.storeImage = functions.https.onRequest((request, response) => {
cors(request, response, () => {
console.log("THE BODY:" + JSON.stringify(request.body));

const body = JSON.parse(request.body);
console.log("THE IMAGE:" + body.image);
fs.writeFileSync("/tmp/uploaded-image.jpg", body.image, "base64", err => {
  console.log(err);
  return response.status(500).json({ error: err });
});
const bucket = storage.bucket("awsome-1548769019561");
const uuid = UUID();
console.log("UUID: " + uuid);
bucket.upload(
  "/tmp/uploaded-image.jpg",
  {
    uploadType: "media",
    destination: "/places/" + uuid + ".jpg",
    metadata: {
      metadata: {
        contentType: "image/jpeg",
        firebaseStorageDownloadTokens: uuid
      }
    }
  },
  (err, file) => {
    if (!err) {
      response.status(201).json({
        imageUrl:
          "https://firebasestorage.googleapis.com/v0/b/" +
          bucket.name +
          "/o/" +
          encodeURIComponent(file.name) +
          "?alt=media&token=" +
          uuid
      });
    } else {
      console.log(err);
      response.status(500).json({ error: err });
    }
    }
  );
});
});
我发出的请求机构:

{"image": "/9j/4QG1RXhpZgAATU0AKgAAAAgABwEQA..."}
我得到这个错误:

SyntaxError: Unexpected token o in JSON at position 1
at Object.parse (native)
at cors (/user_code/index.js:21:24)
at cors (/user_code/node_modules/cors/lib/index.js:188:7)
at /user_code/node_modules/cors/lib/index.js:224:17
at originCallback (/user_code/node_modules/cors/lib/index.js:214:15)
at /user_code/node_modules/cors/lib/index.js:219:13
at optionsCallback (/user_code/node_modules/cors/lib/index.js:199:9)
at corsMiddleware (/user_code/node_modules/cors/lib/index.js:204:7)
at exports.storeImage.functions.https.onRequest (/user_code/index.js:18:3)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)

您的错误是由行
constbody=JSON.parse(request.body)引起的


Firebase自动解析来自请求正文的数据,您无需亲自尝试,请参阅中的“从请求读取值”一节。由于您的主体已经是JSON格式,并且您的函数正在尝试将其重新JSON化。。。然后它触发了这个错误。去掉该行,您就不会再出现该错误。

FYI您不需要为云存储SDK提供配置。如果您在没有参数的情况下初始化它,它将使用您的项目的默认服务帐户,该帐户应该具有您对云存储桶所需的所有访问权限。