我正在尝试使用我获得的节点文件系统保存图像https://picsum.photos/ https://picsum.photos/但正在写入的文件不是我所期望的。
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
is 'json'
默认情况下。有一个使用 axios 请求将图像写入磁盘的示例docs https://github.com/axios/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
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)