我正在使用Google驱动器获取文件和导出文件nodejs API,但是在此API中有很多mimeType,如果我上传了日常使用的文件,例如.docx,.xls,pdf等,那么我可以处理,但是如果文件mimeType不同,那么我该如何处理这些类型。在我的代码中创建许多条件来处理mimeTypes非常棘手。 请帮助我。以下是我的代码。
const drive = google.drive({version: 'v3', auth});
var fileId = fileId;
var ext, mimTypes;
drive.files.get({fileId: fileId},function(err, res){
if(res.data.mimeType == 'application/vnd.google-apps.document'){
mimTypes = 'application/vnd.oasis.opendocument.text';
ext = '.docx';
}else if(res.data.mimeType =='application/vnd.google-apps.spreadsheet'){
mimTypes = 'text/csv';
ext = '.xls';
}else if(res.data.mimeType == 'application/pdf'){
if(res.data.name.indexOf(".pdf") != -1){
res.data.name = res.data.name.split('.pdf')[0];
}
mimTypes = 'application/pdf';
ext = '.pdf';
}
对于从Google驱动器导出文件:
var dest = config.lib.fs.createWriteStream('./uploads/'+res.data.name+ext);
drive.files.export({fileId: res.data.id, mimeType: mimTypes}, {responseType: 'stream'},
function(err, res){
res.data
.on('progress', function (state) {
console.log('progress', state);
io.sockets.emit("upload_progress", state);
})
.on('end', () => {
console.log('Done');
io.sockets.emit("upload_progress", {percent: 100});
})
.on('error', err => {
console.log('Error', err);
})
.pipe(dest);
})