我正在调用Google云端硬盘的下载API,然后我想使用fs.writeFile
或fs.writeFileSync
在本地写入下载的文件。这是我在做什么:
const writeFile = util.promisify(fs.writeFile)
const file_from_google = await axios.get(`https://www.googleapis.com/drive/v3/files/${id}?alt=media`,
{headers:
{'Authorization': `Bearer ${someToken}`},
},)
const fullPath = path.join(__dirname, '..', 'downloads','testFile.docx')
writeFile(fullPath, file_from_google.data)
虽然确实在指定目录中为我创建了文件,但是无论执行writeFile
还是writeFileSync
,文件都已损坏。我也尝试过直接使用fs.writeFileSync
而不是散布它。几乎每次我损坏的文件都大于原始文件的大小时。有人可以告诉我一种将下载的文件正确写入目录的好方法吗?
答案 0 :(得分:1)
您需要将responseType: 'arraybuffer'
选项添加到axios.get
const writeFile = util.promisify(fs.writeFile)
const file_from_google = await axios.get(`https://www.googleapis.com/drive/v3/files/${id}?alt=media`,
{responseType: 'arraybuffer, headers:
{'Authorization': `Bearer ${someToken}`},
},)
const fullPath = path.join(__dirname, '..', 'downloads','testFile.docx')
writeFile(fullPath, file_from_google.data)