【问题标题】:Web Server saving images as 0 bytesWeb 服务器将图像保存为 0 字节
【发布时间】:2021-09-15 23:35:45
【问题描述】:

当我通过 http 请求将图像发送到我的网络服务器时,它会设法保存原始图像的完整尺寸。但是当我尝试调整图像大小时,它会将其保存为 0 字节。我使用一个名为 sharp 的 npm 模块来调整图像大小。当我在本地机器上进行任何调整大小,甚至是大规模调整大小的工作时,都没有问题。在我的 Apache Web 服务器上运行此代码会导致它在大多数情况下实际上不会保存图像。它实际保存的图像似乎完全随机。唯一一致的部分是它保存了通过http请求发送的原始图像。

在我的文件系统中会有原始图像EG:abcdefg.jpg,然后abcdefg-350x350.jpg将是0字节。

        const results = await temp.mv(path.resolve(folderName + name + '.' + extension))

        bluebird.map(sizes, (size) => {
            sharp(folderName + name + '.' + extension)
                .resize(size.w, size.h, {
                    fit: 'cover'
                })
                .toFile(folderName + name + '-' + size.w + 'x' + size.h + '.' + extension)
            console.log('Resized image')
        })
        .then(() => {
            console.log('Images were resized')
            if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'testing') {
                console.log('Images resized and going back');
                res.status(200).json({'location': '/imageserving/uploads/' + year + '/' + month + '/' + name + '.' + extension, fileIndex: '1'});
            }
            else if (process.env.NODE_ENV === 'production') {
                //possibly use req.hostname
                res.status(200).json({'location': 'mysite/uploads/' + year + '/' + month + '/' + name + '.' + extension, fileIndex: '1'});
            }   
        })

【问题讨论】:

    标签: node.js image apache image-processing sharp


    【解决方案1】:

    尝试更新这一行:

    sharp(folderName + name + '.' + extension)
    

    到这里:

    return sharp(folderName + name + '.' + extension)
    

    ...这应该确保以下 then() 部分正确链接到承诺,并避免可能导致不一致行为的潜在竞争条件。

    【讨论】:

    • 我会尝试一下,如果它完成任何事情,会回复你。谢谢!
    • 不幸的是,经过一周的测试,仍有图像被调整为 0 字节。我绝对认为这与我的网络服务器有关。感谢您尝试帮助我!
    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2011-03-18
    • 2022-01-14
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多