Три шага: создайте временный файл с вашими данными base64 из функции drive.files.create, затем дайте этому файлу определенное имя -eg tempFile, также вы можете настроить это имя со временемзначение.После этого передайте этот файл методу "fs.createReadStream", чтобы загрузить его на диск Google.
Некоторые подсказки:
Во-первых - используйте path.join (__dirname, name + "-" + Date.now () + ". ext"), чтобы создать имя файла
Во-вторых - makeэтот процесс выполняется асинхронно, чтобы избежать конфликта потоков данных (при попытке создания файла до его создания), поэтому вызовите drive.files.create после установки функции fs.writeFile.
В-третьих - Уничтожить временный файл после завершения операции.Это позволяет автоматизировать процесс.
Я позволю вам погрузиться в методы, которые вам нужны.Но в основном fs должен выполнять эту работу.
Опять же, будьте осторожны с потоком данных и используйте callback для управления им.Ваш код может потерпеть крах только потому, что функция не работает.Некоторые ссылки:
https://nodejs.org/api/path.html https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback
вот экземпляр:
// datavalue = some time value
fs.writeFile(
path.join(__dirname, name + "-" + datevalues +".mp3" ),
data.substr(data.indexOf(',')+1),
{encoding: 'base64'},
// callback
function(err) {
if(err){ console.log("error writting file : " + err)}
console.log('File created')
console.log("WRITTING") // control data flow
fileCreate(name)
})
function fileCreate (name){
// upload file in specific folder
var folderId = "someID";
var fileMetadata = {
'name': name + ".mp3" ,
parents: [folderId]
}; console.log("MEDIA") // control data flow
var media = {
mimeType: 'audio/mp3',
body: fs.createReadStream(path.join(__dirname, name + "-" + datevalues +".mp3" ))
};
drive.files.create({
auth: jwToken,
resource: fileMetadata,
media: media,
fields: 'id'
}, function (err, file) {
if (err) {
// Handle error
console.error(err);
} else {
console.log('File Id: ', file.data.id);
}
// make a callback to a deleteFile() function // I let you search for it
});
}