如何在特定的存储区目录(例如foo
)中上传Google Cloud上的文件?
"use strict";
const gcloud = require("gcloud");
const PROJECT_ID = "<project-id>";
let storage = gcloud.storage({
projectId: PROJECT_ID,
keyFilename: 'auth.json'
});
let bucket = storage.bucket(`${PROJECT_ID}.appspot.com`)
bucket.upload("1.jpg", (err, file) => {
if (err) { return console.error(err); }
let publicUrl = `https://firebasestorage.googleapis.com/v0/b/${PROJECT_ID}.appspot.com/o/${file.metadata.name}?alt=media`;
console.log(publicUrl);
});
我试过了:
bucket.file("foo/1.jpg").upload("1.jpg", ...)
但那里没有upload
方法。
如何在1.jpg
目录中发送foo
?
在Firebase中,在客户端,我这样做:
ref.child("foo").put(myFile);
答案 0 :(得分:17)
bucket.upload("1.jpg", { destination: "YOUR_FOLDER_NAME_HERE/1.jpg" }, (err, file) => {
//Do something...
});
这会将1.jpg
放入YOUR_FOLDER_NAME_HERE
- 文件夹。
答案 1 :(得分:1)
你在这里...
const options = {
destination: 'folder/new-image.png',
resumable: true,
validation: 'crc32c',
metadata: {
metadata: {
event: 'Fall trip to the zoo'
}
}
};
bucket.upload('local-image.png', options, function(err, file) {
// Your bucket now contains:
// - "new-image.png" (with the contents of `local-image.png')
// `file` is an instance of a File object that refers to your new file.
});
答案 2 :(得分:1)
UPDATE 2020
根据Google文档:
Set
答案 3 :(得分:0)
如果不需要从同一个项目访问projectId,keyFilename,..,我使用下面的代码进行上传和下载,则效果很好。
// Imports the Google Cloud client library
const Storage = require('@google-cloud/storage');
const storage = new Storage();
var destFilename = "./test";
var bucketName = 'cloudtesla';
var srcFilename = 'test';
const options = {
destination: destFilename,
};
//upload file
console.log("upload Started");
storage.bucket(bucketName).upload(srcFilename, {}, (err, file) => {
if(!err)
console.log("upload Completed");
else
console.log(err);
});
//Download file
console.log("Download Started");
storage
.bucket(bucketName)
.file(srcFilename)
.download(options)
.then(() => {
console.log("Download Completed");
})
.catch(err => {
console.error('ERROR:', err);
});
答案 4 :(得分:0)
如果要在将文件上传到存储桶时使用async-await,则回调将无法完成工作,这是我的方法。
async function uploadFile() {
const destPath = 'PATH_TO_STORAGE/filename.extension';
await storage.bucket("PATH_TO_YOUR_BUCKET").upload(newFilePath, {
gzip: true,
destination: destPath,
});
}
希望它可以帮助某人!
答案 5 :(得分:0)
要上传到 .NET Core 中的特定目录,请使用
var uploadResponse= await storageClient.UploadObjectAsync(bucketName, $"{foldername}/"+fileName, null, memoryStream);
这应该将您的文件 'fileName' 上传到存储桶中的文件夹“foldername”
答案 6 :(得分:-1)
我认为只添加foo /到文件名就可以了,比如<module>.nocache.js
在GCS中,目录只是文件名中有'/'的问题。