Загрузка с локальной FS на Azure - PullRequest
       31

Загрузка с локальной FS на Azure

0 голосов
/ 26 сентября 2018

У меня есть огромное количество изображений в разных каталогах, которые мне нужно загрузить, и я отслеживаю имена папок, в которых они находились. Сейчас я пытался использовать NodeJS, но не удалось выполнить загрузку.Какой лучший способ сделать эту задачу?(Работает на MacOS)

 const imageDir = '/Users/ad/Pictures/Migrtion/ab02';
 const getImages = async(imageDir, callback) => {
     let fileType = '.jpg';
     let files = [];
     let i;
     const url = 'http://localhost:3000/api/images/test';
     fs.readdir(imageDir, async(err, list) => {
         for (i = 0; i < list.length; i++) {
             if (path.extname(list[i]) === fileType) {
                 //
                 files.push(list[i]);

                 // First I want to read the file
                 fs.readFile(imageDir + '/' + list[i], async
                     function read(err, data) {
                         if (err) {
                             throw err;
                         }
                         const image = await axios.post(url, data);
                         console.log(image)
                     });
             }
         }
         callback(err, files);
     });
 };

 router.post('/test', async(req, res) => {
     try {
         upload(req, res, async(err) => {
             if (err) {
                 return res.status(400).json({
                     message: 'Image upload ' + err
                 });
             }

             const query = {
                 filename: isCloudUpload ? req.file.blobName : req.file.filename,
                 type: req.file.mimetype,
                 path: isCloudUpload ? req.file.url : req.file.path,
                 size: req.file.size,
                 etag: isCloudUpload ? req.file.etag : 'LOCAL'
             };

             return res.status(200).json({
                 message: query
             });
         });
     } catch (ex) {
         return res.status(500).json({
             message: 'Exception:' + ex
         });
     }
 });

 const upload({
     storage: new MulterAzureStorage({
         azureStorageConnectionString: keyAzure,
         containerName: 'uploads',
         containerSecurity: 'blob'
     }),
     fileFilter: filterSettings,
     limits: {
         fileSize: 1024 * 1024 * process.env.UPLOAD_MAX_MB,
     },
 }).single(imageFileName);

Использование библиотек Multer и MulterAzure для меня в этом случае.Также с использованием JS, но любой другой язык подходит, если я могу выполнить задачу, поэтому я хочу, чтобы скрипт выполнял то, что я хочу записывать каждый возвращенный URL в файл CSV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...