2012-07-04 31 views

Trả lời

52

Đặt dữ liệu vào một bộ đệm bằng cách sử dụng mã hóa 'base64', sau đó viết này vào một tập tin:

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

gì nếu nó không phải là một PNG? –

+1

Thay thế phần mở rộng tệp thích hợp? Đây chỉ là một ví dụ, giải pháp chung là: (1) lấy phần dữ liệu sau phần dữ liệu: bất cứ thứ gì/bất cứ điều gì; base64, 'part, (2) đặt nó vào bộ đệm bằng 'base64', (3) viết vào một tập tin. Nếu loại mime là khác nhau, sử dụng một phần mở rộng tập tin khác nhau/sử dụng một regex/etc. –

+3

Làm thế nào về 'var data = string.substr (string.indexOf ('base64') + 7)'? –

17

Hãy thử điều này

var dataUrl = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; 
var buffer = new Buffer(dataUrl.split(",")[1], 'base64'); 
Các vấn đề liên quan