我创建了一个网络服务来与Google Drive API连接。另外还有一个使用react js前端开发的系统。我需要通过我开发的Web服务将文件从React System发送到Google Drive。为此,我使用了文件流。发送时,出现错误消息“ part.body.pipe不是函数”。这来自Google Drive API。
下面的代码是我发送的POST请求的示例代码。
const axios = require('axios');
const fs = require('fs');
const stream = fs.createReadStream('./download.jpg');
axios.post('http://localhost:3008/google-drive/upload-file', {
stream,
name: 'add.jpg',
mimeType: 'image/jpeg',
}
)
.then((res) => {
console.log(`statusCode: ${res.statusCode}`)
console.log(res)
})
.catch((error) => {
console.error(error)
})
以下是用于文件上传的Google驱动器集成。
function uploadFiles(auth, mainRequest, mainResponse) {
const drive = google.drive({version: 'v3', auth});
const {
stream,
name,
mimeType,
} = mainRequest.body;
let fileMetaData = {
name,
};
let media = {
mimeType,
body: stream,
};
drive.files.create({
media,
resource: fileMetaData,
fields: 'id',
}, (error, file) => {
if (error) {
console.log(error);
return mainResponse.status(200).json({
message: 'The API returned an error: ' + error
});
}
return mainResponse.status(200).json({
fileId: file.id
});
});
}
我认为问题出在createReadStream
中。我不确定我是否正确使用了它。
先谢谢了。 :)
答案 0 :(得分:-1)
您在fs中弄错了
而是尝试使用此同步功能
fs.readFileSync('filename.jpg','utf8')