【问题标题】:EISDIR - EISDIR: illegal operation on a directory, readEISDIR - EISDIR:对目录的非法操作,读取
【发布时间】: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 添加一些日志输出调用导致错误。然后根据你的发现,想想那是怎么回事——我不能在不知道你首先发现什么的情况下说。 :)
  • 错误提示您到达目录而不是存储桶中的文件,因此我将记录 directoryfile.originalname 的值以检查它们是否正确,您可以这样做吗?分享这些信息?

标签: javascript node.js google-cloud-platform


【解决方案1】:

文件的路径是正确的。但是凭证的路径是错误的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-25
    • 2021-06-20
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多