Я пытаюсь загрузить изображение base64 jpeg в Firebase Storage. Я не знаю, в чем дело.Я не думаю, что ошибка из-за моей кодировки изображений.Я пытаюсь загрузить изображение с телефона пользователя в хранилище Firebase, используя React Native (fetch API) для отправки запроса.
index.js file:
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)