2016-02-13 42 views
1

我想下載一個ZIP文件與請求管道它node-unzip然後管它cloudinary。下載解壓縮上傳clodinary

var stream = cloudinary.uploader.upload_stream(function(result) { 
    console.log(result) 
}); 

request(file_url).pipe(unzip.Parse()).pipe(stream); //<-- This do not work! 
ERROR: { error: { message: 'Empty file', http_code: 400 } } 

fs.createReadStream('my_picture.jpg').pipe(stream); //<-- This works! 

回答

1

(你沒有提到,但我假設你request VAR是request一個實例)

首先檢查你的拉鍊是有效的,幷包含了你指望它什麼:

(從node-unzip's readme取代碼)

var unzip = require('unzip'); 
var request = require('request'); 
var fstream = require('fstream'); 
var writeStream = fstream.Writer('output/path'); 

request(file_url) 
    .pipe(unzip.Parse()) 
    .pipe(writeStream); 

然後,發送單(即使只有一個):

var cloudinary = require('cloudinary'); 
var unzip = require('unzip'); 
var request = require('request'); 
var stream = cloudinary.uploader.upload_stream(function(result) { 
    console.log(result) 
}); 
request(file_url) 
    .pipe(unzip.Parse()) 
    .on('entry', function (entry) { 
    var fileName = entry.path; 
    var type = entry.type; // 'Directory' or 'File' 
    var size = entry.size; 
    if (fileName === "your_image.png") { 
     entry.pipe(stream); 
    } else { 
     entry.autodrain(); 
    } 
    });