J'utilise l'API DropBox pour télécharger des fichiers. Pour télécharger les fichiers vers Dropbox, je suis les étapes suivantes :
- Premier fichier téléchargé à partir de
form
dans un répertoire local du serveur. - Lecture d'un fichier dans un répertoire local à l'aide de
fs.createReadStream
- Envoyer un fichier à Dropbox via l'API Dropbox.
La question :
Pour une raison ou une autre fs.createReadStream
prend une éternité lors de la lecture et du téléchargement d'un fichier volumineux. Aujourd'hui, le fichier que j'essaie de télécharger n'a qu'une taille de 12MB qui n'est pas un gros fichier et il faut environ 18 minutes pour télécharger/traiter un fichier de 12 Mo .
Je ne sais pas où se situe le problème, soit dans la createReadStream
ou le code api de Dropbox.
Il fonctionne avec des fichiers dont la taille est comprise entre kb
.
Mon code :
let options = {
method: 'POST',
uri: 'https://content.dropboxapi.com/2/files/upload',
headers: {
'Authorization': 'Bearer TOKEN HERE',
'Dropbox-API-Arg': "{\"path\": \"/test/" + req.file.originalname + "\",\"mode\": \"overwrite\",\"autorename\": true,\"mute\": false}",
'Content-Type': 'application/octet-stream'
},
// I think the issue is here.
body: fs.createReadStream(`uploads/${req.file.originalname}`)
};
rp(options)
.then(() => {
return _deleteLocalFile(req.file.originalname)
})
.then(() => {
return _generateShareableLink(req.file.originalname)
})
.then((shareableLink) => {
sendJsonResponse(res, 200, shareableLink)
})
.catch(function (err) {
sendJsonResponse(res, 500, err)
});
Mise à jour :
const rp = require('request-promise-native');