2012-07-04 15 views
24

मैं इस तरह एक डेटा यूआरएल है:मैं नोड में डेटा यूआरएल कैसे पार्स करूं?

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA... 

सबसे आसान तरीका है बाइनरी डेटा के रूप में इस प्राप्त करने के लिए क्या है (जैसे कि, एक Buffer) तो मैं इसे एक फाइल करने के लिए लिख सकते हैं?

उत्तर

52

'बेस 64' एन्कोडिंग का उपयोग करके बफर में डेटा रखो, तो एक फाइल करने के लिए इस बारे में:

var fs = require('fs'); 
var string = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; 
var regex = /^data:.+\/(.+);base64,(.*)$/; 

var matches = string.match(regex); 
var ext = matches[1]; 
var data = matches[2]; 
var buffer = new Buffer(data, 'base64'); 
fs.writeFileSync('data.' + ext, buffer); 
+0

क्या होगा अगर यह एक PNG नहीं है? –

+1

उपयुक्त फ़ाइल एक्सटेंशन का चयन करें? यह सिर्फ एक उदाहरण है, सामान्य समाधान है: (1) डेटा के बाद डेटा भाग प्राप्त करें: जो भी/जो भी हो; बेस 64, 'भाग, (2) इसे' बेस 64 'का उपयोग करके एक बफर में डाल दें, (3) इसे लिखें एक फाइल के लिए। यदि माइम प्रकार अलग है, तो एक अलग फ़ाइल एक्सटेंशन का उपयोग करें/regex/etc का उपयोग करें। –

+3

'var data = string.substr (string.indexOf ('base64') + 7) के बारे में कैसे? –

17

इस

var dataUrl = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; 
var buffer = new Buffer(dataUrl.split(",")[1], 'base64'); 
3

मैं भी इस तरह के सवालों से मुलाकात का प्रयास करें (पार्स करने और डेटा मान्य यूआरएल) हाल ही में और निम्नलिखित कार्यवाही मिली: https://gist.github.com/bgrins/6194623

मैंने कोड में डेटा यूआरएल के साथ काम करने के लिए 2 पैकेज बनाए हैं। यहाँ वे हैं: https://github.com/killmenot/valid-data-url
https://github.com/killmenot/parse-data-url

बाहर चेक examples

संबंधित मुद्दे