2016-05-27 16 views
0

問題がありますが、解決方法はわかりません。 s3からファイルを読み込んだ後、フォルダに保存します(ダウンロード)。その後、私は(私がダウンロードして保存した)フォルダに保存したファイルを読み込み、サイズを変更して別のフォルダに別の名前で保存します(サイズ変更)。 次に、このファイルを新しいサイズで再びアップロードするためにこのファイルをもう一度読みたいと思いますが、このディレクトリにそのようなファイルがないというエラーがスローされますが、自分のフォルダでチェックすると用量。 イメージが新しいフォルダに書き込まれる前に読み込もうとしています(サイズ変更済み) どうすれば修正できますか?これは私がやったことですが、それはfs.readFileAsyncで何かをプリントアウトdisen'tコミットするのでaccrodings3ノードの読み書きjs

更新

。 なぜですか?青い鳥オブジェクトを仮定

var image = new ImageResize(__dirname +'/../downloads/'+ hash + '.png'); 
    image.smartResizeDown({ 
    width: 200, 
    height: 200 
    }).then(function() { 
    image.stream(function (err, stdout, stderr) { 
     var writeStream = fs.createWriteStream(__dirname +'/../resized/'+ hash + 'resize.png'); 
     stdout.pipe(writeStream); 

}).then(function(){ 
    fs.readFileAsync('C:/Users/user/Desktop/cloud/new/resized/'+hash+'resize.png', function(error, buf){ 

    if(error) 
     console.log(error); 
    else 
     console.log('yay'); 
}); 
}); 

}); 
+0

コードが非同期で実行され、予期しない動作が発生した場合は、このタイプの問題を解決するためにPromise(例:bluebird)を使用してください。 –

+0

@JitendraKhatriはあなたの提案を使用して私の質問を編集しました – user3488862

+0

image.streamはまだ非同期タスクです –

答えて

0

var image = new ImageResize(__dirname +'/../downloads/'+ hash + '.png'); 
 

 
image.smartResizeDown({ 
 
    width: 200, 
 
    height: 200 
 
}) 
 
.then(function() { 
 
    return new Promise(function(resolve, reject) { 
 
     image.stream(function (err, stdout, stderr) { 
 
      var writeStream = fs.createWriteStream(__dirname +'/../resized/'+ hash + 'resize.png'); 
 
      stdout.pipe(writeStream); 
 

 
      resolve(); 
 
     }) 
 
    }); 
 
}) 
 
.then(function(){ 
 
    fs.readFileAsync('C:/Users/user/Desktop/cloud/new/resized/'+hash+'resize.png', function(error, buf) { 
 
     if(error) 
 
      console.log(error); 
 
     else 
 
      console.log('yay'); 
 
    }); 
 
    return null; 
 
});

Promiseという名前の変数です。

+0

まだreadFileAsyncはconsole.logに何も書きません – user3488862

+0

WebStromeでライブをデバッグできますか? –

+0

これを今すぐダウンロードしています。昇華しました – user3488862

関連する問題