我正在使用gif-encoder
npm module创建一个gif,然后使用imgur-uploader
module将其上传到imgur。以下是我的相关代码,其中pics
是一个文件名数组:
var gif = new GifEncoder(imageSize, imageSize);
var file = fs.createWriteStream('testing.gif');
gif.pipe(file);
gif.setRepeat(0);
gif.setQuality(20);
gif.setDelay(100);
gif.writeHeader();
var addToGif = function(images, counter = 0) {
getPixels(images[counter], function(err, pixels) {
gif.addFrame(pixels.data);
gif.read();
if (counter === images.length - 1) {
gif.finish();
} else {
addToGif(images, ++counter);
}
})
}
addToGif(pics);
var sleep = require('sleep');
sleep.sleep(3) // I put this here because I thought I'd have to wait, but it doesn't work
console.log(fs.readFileSync('testing.gif'));
return imgurUploader(fs.readFileSync('testing.gif'), { title: 'Hello!' })
.then(data => {
return data.link;
});
这个 在我的文件系统中正确创建了gif,但console.log(fs.readFileSync('testing.gif')
行只显示了一个空<Buffer >
!这意味着imgurUploader
函数返回400错误,因为它发送(它认为是)一个空文件。
如果我将imgurUploader
文件参数替换为我的文件夹中的一些预先存在的图像,它可以正常工作。
为什么readFileSync
在文件确实存在时返回空缓冲区?