【发布时间】:2019-01-09 06:45:31
【问题描述】:
我正在调用 Google Drive 的下载 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 而不是承诺它。几乎每次我得到一个大于原始文件大小的损坏文件。有人可以告诉我什么是让下载的文件正确写入目录的好方法吗?
【问题讨论】:
-
不重要的旁注,您可以使用
fs.promises.writeFile而不必使用util.promisify。 -
@BenjaminGruenbaum -
fs.promises.writeFile是一种商定的方式,它将在 node.js 中向前发展。我也看到了require('fs/promises')并讨论了如何做。 -
@jfriend00 fs/promises 不会发生 - 它可能在某个时候出现在
@nodejs/fs,fs.promises 是到目前为止的情况,所以这是一个公平的赌注。
标签: javascript node.js asynchronous promise google-drive-api