Я хочу добиться функциональности, когда я могу загрузить определенную часть файла на Google Drive.Я могу сделать это, разделив исходный поток чтения на несколько потоков записи, а затем загрузив их, но этот метод неприемлем, поскольку потоки записи будут жить на сервере (что мне не нужно).
Я пытался преодолеть это, отправляя исходный поток чтения в теле запроса на загрузку, но я не могу найти способ остановить загрузку при выполнении определенного условия.Моя функция загрузки выглядит следующим образом:
var upload = (auth, google, fileName, readStream, res, lastChunk) => {
console.log(`uploading ${fileName}`);
const drive = google.drive({ version: 'v3', auth });
var fileMetadata = {
'name': fileName
};
var media = {
mimeType: 'application/octet-stream',
body: readStream
};
drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id',
headers: {
'uploadType': 'multipart'
}
}, {
onUploadProgress: function (e) {
if (e.bytesRead > 786432){
// want to stop uploading
//readStream.close() <- this doesn't stop the upload
}
console.log(`Uploaded ${fileName}:`, e.bytesRead.toString());
}
}, function (err, file) {
if (err) {
console.error(err);
} else {
if (lastChunk)
res.render('upload-success.hbs');
console.log('File Id: ', file.id);
}
});
Можно ли как-нибудь остановить загрузку и сохранить загруженную часть в Google Диске без изменений?Я пробовал несколько действий в потоке, включая закрытие, приостановку, но ни одно из них не останавливает загрузку.Что-то, что я хотел бы добавить, это то, что если я прочитал X байтов потока и загрузил его, то были загружены правильные байты, то есть байты от X в палатах.