【发布时间】:2021-07-13 17:16:51
【问题描述】:
当我尝试将图像上传到服务器端的存储桶中时,我收到了上述错误。我使用调试器检查了文件参数包含文件的路径而不是文件夹的路径。这是代码:
function uploadFile(file, directory) {
return new Promise((resolve, reject) => {
try {
const bucket = storage.bucket(BUCKET_NAME);
const bucketFile = bucket.file(directory ? `${directory}/${file.originalname}` : file.originalname);
const blobStream = bucketFile.createWriteStream();
blobStream.on('error', err => {
const status = err.status || 500;
console.log(err, status);
reject(err);
});
blobStream.on('finish', async () => {
// The public URL can be used to directly access the file via HTTP.
await bucketFile.makePublic();
const publicUrl = `https://storage.googleapis.com/${bucket.name}/${bucketFile.name}`;
resolve(publicUrl);
});
blobStream.end(file.buffer);
} catch (err) {
reject(err);
}
});
}
你能帮帮我吗?
【问题讨论】:
-
使用
strace运行它以查看导致EISDIR的确切系统调用以及它的路径参数是什么 - 或者,如果您获得堆栈跟踪,请直接在fs添加一些日志输出调用导致错误。然后根据你的发现,想想那是怎么回事——我不能在不知道你首先发现什么的情况下说。 :) -
错误提示您到达目录而不是存储桶中的文件,因此我将记录
directory和file.originalname的值以检查它们是否正确,您可以这样做吗?分享这些信息?
标签: javascript node.js google-cloud-platform