我正在尝试使用从 https://picsum.photos/ 获得的 Node 文件系统来保存图像但正在写入的文件不是我所期望的。
const axios = require('axios');
const path = require('path');
const fs = require('file-system');
axios.get('https://picsum.photos/id/237/200/300')
.then((data) => {
fs.writeFile(path.resolve(__dirname, '../assets/test/test1.jpg'), data.data, (err) => {
if (err) {
console.log(err);
throw err;
}
console.log('file save successfully');
});
})
.catch((err) => {
console.log(err);
});
最佳答案
数据可能以错误的编码返回,因为没有指定编码 - 最有可能是文本而不是二进制流,因为 responseType
是 'json'
默认情况下。 docs 上有一个使用 axios 请求将图像写入磁盘的示例。 ,其中 responseType
设置为 stream
并且给定的流通过管道传输到 writeStream。这可能就是您需要的方法。
下面是文档中给出的代码示例:
// GET request for remote image axios({ method: 'get', url: 'https://picsum.photos/id/237/200/300', responseType: 'stream' }) .then(function (response) { response.data.pipe(fs.createWriteStream('ada_lovelace.jpg')) });
如果您仍想使用writeFile
,则可以设置responseType: 'arraybuffer'
,并将给定的缓冲区传递给fs.writeFile
>.
关于node.js - 使用 fs.writeFile 保存图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60677305/