2012-10-25 65 views
2

我對nodejs很新,有時遇到困難:) 舉個例子。我通過AJAX發送圖像文件,並在我的應用程序中成功收到它。Nodejs:迭代req.files屬性

的console.log(req.files)打印:

{ 
    img_1351078491675: { 
     size: 354683, 
     path: '/tmp/f29009b6dc914c2ab27e2c5fde13e7d8.jpg', 
     name: 'nov10wallpaper-1_1600.jpg', 
     type: 'image/jpeg', 
     hash: false, 
     lastModifiedDate: Wed Oct 24 2012 13: 36: 55 GMT + 0200(CEST), 
     _writeStream: { 
      path: '/tmp/f29009b6dc914c2ab27e2c5fde13e7d8.jpg', 
      fd: 14, 
      writable: false, 
      flags: 'w', 
      encoding: 'binary', 
      mode: 438, 
      bytesWritten: 354683, 
      busy: false, 
      _queue: [], 
      _open: [Function], 
      drainable: true 
     }, 
     length: [Getter], 
     filename: [Getter], 
     mime: [Getter] 
    } 
} 

因爲圖像具有時間戳我不能req.files.img_訪問。所以我正在使用(在reg.files中的文件)來獲取它(forEach沒有工作 - 不知道爲什麼,似乎是一個正常的哈希/對象)。 但現在我的問題實際上開始了。我如何讀出該文件的屬性?例如。 file.path不起作用。它返回「未定義」,但爲什麼?

有人請給我一個提示,以瞭解這種基本知識嗎?

回答

6

我認爲forEach()是爲數組而不是對象,所以這可能是爲什麼沒有工作。

如果只有(曾經)一個文件,然後:

var fileKey = Object.keys(req.files)[0]; 
var file = req.files[fileKey]; 

...或者只是:

var file = req.files[Object.keys(req.files)[0]];` 

... ...將 '向下挖一個級別',所以你可以做file.pathfile.type。如果有(或可能)不止一個:

var files = []; 
var fileKeys = Object.keys(req.files); 

fileKeys.forEach(function(key) { 
    files.push(req.files[key]); 
}); 

這會給你的文件列表「下挖一個級別」,您可以在其中forEach()

希望有幫助!

+0

謝謝!就是這樣 – JimBob

+0

很高興我能幫忙! :) – floatingLomas