2015-09-29 47 views
-1

我正通過REST服務調用接收供應商API的多部分文件。該文件包含兩個圖像的XML數據和blob數據。我需要能夠使用Node/Express將這些文件分割並存儲爲單個文件。我已經在多部分表單數據上看到了很多帖子/資源,但是我的需求是使用JavaScript將其解析爲單個文件,然後將其上載到Azure Blob存儲中。我懷疑節點/快車或節點模塊,如請求(https://github.com/request/request)是正確的路要走,但沒有找到具體的東西。這是一個multipart文件的例子。請注意,有沒有文件名的分段文件:使用Node/Express解析多部分文件並上傳到Azure Blob存儲

MIME-Version:1.0 
Content-Type:multipart/mixed; 
boundary="----=_Part_4_153315749.1440434094461" 

------=_Part_4_153315749.1440434094461 
Content-Type: application/octet-stream; name=Texture_1.png 
Content-ID: response-1 
Content-Disposition: attachment; filename=Texture_1.png 

‰PNG 
"blob data here" 

------=_Part_4_153315749.1440434094461 
Content-Type: application/octet-stream; name=manifest.xml 
Content-ID: response-2 
Content-Disposition: attachment; filename=manifest.xml 

<?xml version="1.0"?> 
<dae_root>blank_3D.dae</dae_root> 

------=_Part_4_153315749.1440434094461 
Content-Type: application/octet-stream; name=texture_3D.dae 
Content-ID: response-3 
Content-Disposition: attachment; filename=texture_3D.dae 

<xml data here... lots of xml data> 

------=_Part_4_153315749.1440434094461 
Content-Type: application/octet-stream; name=Texture_0.png 
Content-ID: response-4 
Content-Disposition: attachment; filename=Texture_0.png 

‰PNG 
"blob image data" 
+0

你可用於提供完整的xml文件內容以便於測試? –

+0

當然@ GaryLiu-MSFT,試試這個鏈接:https://dl.dropboxusercontent.com/u/46697217/MultipartTest – Kode

回答

1

根據您的描述,看起來這是一個有關一個純粹的node.js的問題,而不是一個藍色的 - 隨時糾正我,如果我有什麼誤解。在這種情況下,我建議我們可以充分利用以下兩個模塊來解決這一問題:下面爲您快速參考

https://github.com/isaacs/multipart-js/

https://github.com/felixge/node-formidable

樣品多,JS解析:

var multipart = require("multipart"); 

// parsing 
var parser = multipart.parser(); 

// in all event handlers, "this" is the parser, and "this.part" is the 
// part that's currently being dealt with. 
parser.onpartbegin = function (part) { doSomething(part) }; 
parser.ondata = function (chunk) { doSomethingElse(chunk) }; 
parser.onend = function() { closeItUp() }; 

// now start feeding the message through it. 
// you can do this all in one go, if you like, or one byte at a time, 
// or anything in between. 
parser.boundary = "foo"; 
var chunk; 
while (chunk = upstreamThing.getNextChunk()) { 
    parser.write(chunk); 
} 
parser.close(); 
+0

這是有幫助的。在我的情況下,我需要將部分分析後上傳到Azure Blob存儲。 – Kode

+0

Multipart看起來不喜歡它的工作/準備好黃金時段。我還沒有看到任何可怕的例子。你有一個強大的嗎? – Kode

相關問題