Javascript fs.writeFileSnyc/fs.writeFile写入损坏的文件
我正在调用Google Drive的下载API,然后我想使用Javascript fs.writeFileSnyc/fs.writeFile写入损坏的文件,javascript,node.js,asynchronous,promise,google-drive-api,Javascript,Node.js,Asynchronous,Promise,Google Drive Api,我正在调用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`, {
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
,而不是使用它。几乎每次我得到一个比原始文件大的损坏文件。有人能告诉我什么是将下载的文件正确写入目录的好方法吗?您需要将响应类型:'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)
您需要将
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)
不重要的旁注是,您可以使用
fs.promises.writeFile
而不必执行util.promisify
@BenjaminGruenbaum-这是fs.promises.writeFile
在node.js中的约定方式。我也看到了require('fs/promissions')
以及关于如何做的讨论。@jfriend00 fs/promissions不会发生-可能在@nodejs/fs
某个时候,fs.promissions是目前为止的情况,这是一个公平的赌注。不重要的旁注,您可以使用fs.promises.writeFile
而不必执行util.promisify
@BenjaminGruenbaum-这是fs.promises.writeFile
在node.js中的约定方式。我也看到了require('fs/promissions')
以及关于如何做的讨论。@jfriend00 fs/promissions不会发生-可能是在@nodejs/fs
某个时候,fs.promissions是目前的情况,所以这是一个公平的赌注。