Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const fs = require('fs');
- const mkdirp = require('mkdirp');
- const path = require('path');
- const request = require('request');
- const url = require('url');
- const downloadFile = async (file, targetFolder) => {
- // Parse remote file spec
- const sourceUrl = url.parse(file.url ? file.url.id : file.id);
- const sourceHref = sourceUrl.href;
- const sourcePath = path.parse(sourceUrl.path);
- const sourceBase = sourcePath.base;
- // Ensure folder exists
- mkdirp.sync(targetFolder);
- // Generate local file path/name
- const localFile = path.resolve(targetFolder, sourceBase);
- // Download
- return new Promise((resolve, reject) => {
- request(sourceHref)
- .pipe(fs.createWriteStream(localFile))
- .on('error', error => reject(error))
- .on('close', () => resolve(localFile));
- });
- };
- const uploadFile = async (localFile, remoteFolder) => {
- return new Promise((resolve, reject) => {
- const req = request.post(remoteFolder, function(err, resp, body) {
- if (err) {
- reject(err);
- } else {
- if (resp.statusCode !== 200) {
- // console.log('resp:', resp)
- reject(
- new Error(
- `Failed to upload: ${resp.statusCode} - ${resp.statusMessage}`
- )
- );
- }
- const url = body.slice('File uploaded: '.length);
- resolve(url);
- }
- });
- const form = req.form();
- form.append('file', fs.createReadStream(localFile));
- });
- };
- module.exports = {
- downloadFile,
- uploadFile
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement