Kako bi mogao uploadat vanjeki file (sa nekog url-a) na file storage (u ovom slučaju to je BackBlaze)?
Kada pokušam sa “fs.readFileSync(filePath)” uploadovati file sa mog lokalnog diska, onda sve radi OK
ali htjeo bih uploadovati file, kao npr. “https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4”
Dali postoji način da file sa url-a uploadiram direktno na BackBlaze ili ga moram prvo downloadat, pa ga takvog uploadat na BackBlaze?
Evo primjer koda s kojim sam pokušavao to izvest, ali nisam uspio:
const B2 = require("backblaze-b2");
const fs = require("fs");
var request = require("request");
var filePath =
"https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4";
const b2 = new B2({
applicationKeyId: "XXXXXXXXXX", // or accountId: 'accountId'
applicationKey: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", // or masterApplicationKey
});
async function GetBucket(form) {
try {
await b2.authorize(); // must authorize first (authorization lasts 24 hrs)
let response = await b2.getBucket({ bucketName: "XXXXXXXXXX" });
let uploadURL = await b2.getUploadUrl({
bucketId: "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
});
console.log("Upload URL: " + uploadURL.data.uploadUrl);
console.log("Authorization Token: " + uploadURL.data.authorizationToken);
//====================================//
let uploadFile = b2
.uploadFile({
uploadUrl: uploadURL.data.uploadUrl,
uploadAuthToken: uploadURL.data.authorizationToken,
fileName: "test_1-5MG.mp4",
contentLength: 0, // optional data length, will default to data.byteLength or data.length if not provided
mime: "b2/x-auto", // optional mime type, will default to 'b2/x-auto' if not provided
data: request(
"https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4"
)
.pipe(fs.createWriteStream("5MG.mp4")) // OVO PREUZME FILE...
.pipe(fs.readFileSync("5MG.mp4")), // OVAKO NE RADI...
// data: fs.readFileSync(filePath), // OVAKO RADI...
info: { name: "video-example", type: "video/mp4" },
onUploadProgress: null,
})
.then((res) => {
console.log("File is uploaded...");
}); // returns promise
} catch (err) {
console.log("Error getting bucket:", err);
}
}
const Bucket = GetBucket();
console.log("start...");