I am getting connect Request failed with status code 400
from b2.uploadFIle()
Here's what I tried to do:
Step 3: Set up my code:
import B2 from "backblaze-b2";
export const uploadCreationImage = async (
) => {
try {
const b2 = new B2({
applicationKeyId: process.env.backblazeb2ApplicationKeyId,
applicationKey: process.env.backblazeb2ApplicationKey,
});
await b2.authorize(); // must authorize first (authorization lasts 24 hrs)
console.log("I am here");
let response = await b2.getBucket({
bucketName: "bucketName",
});
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "./uploads");
},
filename: function (req, file, cb) {
cb(null, file.originalname);
},
});
const multerUploader = multer({});
upload(req, res, (err: any) => {
if (err instanceof multer.MulterError) {
return res.sendStatus(INTERNAL_SERVER_ERROR_STATUS);
// A Multer error occurred when uploading.
} else if (err) {
// An unknown error occurred when uploading.
return res.sendStatus(INTERNAL_SERVER_ERROR_STATUS);
}
// console.log("joe", req.file.buffer);
// console.log("biden", req.file);
b2.getUploadUrl({
bucketId: "58dd09e54842aafc7dcd0917",
// ...common arguments (optional)
}).then((response) => {
console.log("getUploadUrl", response.data.uploadUrl , response.data.authorizationToken);
b2.uploadFile({
uploadUrl: response.data.uploadUrl,
uploadAuthToken: response.data.authorizationToken,
fileName: "fileName",
data: req.file.buffer, // this is expecting a Buffer, not an encoded string
onUploadProgress: null,
//onUploadProgress: (event) => {} || null // progress monitoring
// ...common arguments (optional)
}).then((response) => {
console.log('uploadFIle', response);
return res.send({ path: req.file.originalname });
}
// Everything went fine and save document in DB here.
});
});
I used multer to get the image file from the form request and then pass it to b2.uploadFile's data property as a buffer.
Any help would be appreciated!
CodePudding user response:
Fixed! all I had to do was to get rid of the optional parameters in b2.uploadFile()
upload(req, res, (err: any) => {
if (err instanceof multer.MulterError) {
return res.sendStatus(INTERNAL_SERVER_ERROR_STATUS);
// A Multer error occurred when uploading.
} else if (err) {
// An unknown error occurred when uploading.
return res.sendStatus(INTERNAL_SERVER_ERROR_STATUS);
}
b2.getUploadUrl({
bucketId: process.env.backblazeb2BucketId,
// ...common arguments (optional)
}).then((response) => {
console.log(
"getUploadUrl",
response.data.uploadUrl,
response.data.authorizationToken
);
b2.uploadFile({
uploadUrl: response.data.uploadUrl,
uploadAuthToken: response.data.authorizationToken,
fileName: "fileName",
// contentLength: 0, // optional data length, will default to data.byteLength or data.length if not provided
//mime: "", // optional mime type, will default to 'b2/x-auto' if not provided
data: req.file.buffer, // this is expecting a Buffer, not an encoded string
//hash: "sha1-hash", // optional data hash, will use sha1(data) if not provided
// info: {
// // optional info headers, prepended with X-Bz-Info- when sent, throws error if more than 10 keys set
// // valid characters should be a-z, A-Z and '-', all other characters will cause an error to be thrown
// key1: "value",
// key2: "value",
// },
onUploadProgress: (event) => {},
//onUploadProgress: (event) => {} || null // progress monitoring
// ...common arguments (optional)
}).then((response) => {
console.log("uploadFIle", response);
return res.send({
path: req.file.originalname,
});
});
// Everything went fine and save document in DB here.
});
});