gpt4 book ai didi

javascript - 在 Javascript 中从本地路径创建文件或 Blob

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:45 27 4
gpt4 key购买 nike

我在堆栈溢出中广泛而系统地搜索了答案,但未能找到适合我需要的答案。

我正在尝试将多个文件上传到 Firebase Storage,这需要 File 或 Blob 对象。

var file = ... // use the Blob or File API
ref.put(file).then(function(snapshot) {
console.log('Uploaded a blob or file!');
});

我的项目中有一个文件夹,其中包含我要上传的所有文件,并且我正在尝试使用它们的路径创建此类对象。然而,我的尝试都没有成功。

我尝试导入文件:

let file = require('./Images/imagename.jpg');

我研究了使用“fs”、文件 API 和其他选项,但似乎没有一种方法可以让我仅使用路径将文件放入对象中。

简而言之:有没有简单的方法可以从本地路径获取对象?

最佳答案

以下是将文件从驱动器上传到 Firebase Storage 的方法:

let bucket = admin.storage().bucket();
let uploadRes = await bucket.upload(filePath, options);

您可以在google cloud storage docs中找到该选项的描述。 。您很可能会在 google 云控制台中创建一个具有权限的 key ,并将文件导出为 json。您可以在 Google Cloud Platform 控制台 -> IAM 和管理 -> 服务帐户 -> 创建服务帐户(使用 key 创建)中找到它。导出 json 后,设置环境变量,如下所示:

导出 GOOGLE_APPLICATION_CREDENTIALS='./the_exported_file.json'

请将此文件安全地存储在您的服务器上,因为它具有读写访问权限!

下面是上传函数的完整示例,该函数还使用其哈希名称保存文件。

<!-- language: typescript -->
import admin from "firebase-admin";
import path from 'path'
const sha256File = require('sha256-file');

const firebaseConfig = {
apiKey: "...",
authDomain: "abc.firebaseapp.com",
databaseURL: "https://abc.firebaseio.com",
projectId: "abc",
storageBucket: "abc.appspot.com",
messagingSenderId: "123",
appId: "1:123:web:xxx",
measurementId: "G-XXX"
};

admin.initializeApp(firebaseConfig);

async function uploadFile(filePath: string, uploadFolder: string, contentType: string, hash: string | undefined = undefined,)
: Promise<string> {

if (!hash) {
hash = await sha256File(filePath);
}
let bucket = admin.storage().bucket();
const ext = path.extname(filePath);
const uploadPath = uploadFolder + hash + ext;
const options = {destination: uploadPath};
console.debug("starting upload");
let uploadRes = await bucket.upload(filePath, options);
console.debug("finished upload");

let newMetadata = {
contentType: contentType
};
if(uploadRes) {
let file = uploadRes[0];
file.setMetadata(newMetadata).then(() => {
// Updated metadata for 'images/forest.jpg' is returned in the Promise
}).catch(function (error) {
console.error(error)
});
}

return uploadPath;
}

关于javascript - 在 Javascript 中从本地路径创建文件或 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559886/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com