#node.js #google-drive-api
#node.js #google-drive-api
Вопрос:
Я использую Google Drive для получения файлов и экспорта файлов 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);
})
Комментарии:
1. Как еще вы ожидаете это сделать, не выдвигая дополнительных условий?
2. На самом деле я хочу использовать этот API с минимальными условиями, если у меня есть 100 типов файлов (разные mimeType), то это добавит больше условий в мой код.
3. Этого не произойдет. Ваш код никак не сможет угадать, что это за mimetype, если вы его не добавите. Начните добавлять типы файлов или прекратите поддерживать их все.
4. О, хорошо. спасибо за ваш ответ.