2012-11-12 36 views
5

Tôi đang cố gắng sử dụng nodeJS để lưu hình ảnh đã xử lý được lưu trữ trong chuỗi base64.Tập tin rỗng NodeJS writeStream

var buff = new Buffer(base64data,'base64'); 
console.log(base64data); 

var stream = fs.createWriteStream('/path/to/thefile.png'); 
stream.write(buff) 
stream.end() 

Tuy nhiên, tệp kết quả trống.

Khi tôi lấy đầu ra của console.log(base64data); và giải mã cục bộ, nó tạo ra một tệp nhị phân png hợp lệ, vậy tại sao tệp rỗng?

Tệp là tệp png png 3600x4800 png (tức là rất lớn), đây có phải là yếu tố không?

Ngoài ra, tôi cũng đã thử writeFile, không may mắn.

Và vâng, fsrequire('fs')

Cảm ơn

+0

mã có giá trị, và tôi có thể lấy nó làm việc tại địa phương, thử đăng nhập 'buff' như đó là những gì bạn đang cố gắng để viết (không phải' base64data') đến để xem liệu có sự cố khi chuyển đổi nó hay không. Ngoài ra, bạn có thể thử kiểm tra quyền của mình. – Sdedelbrock

Trả lời

8

stream.end của bạn() quá sớm như không có gì được viết. nó là hàm async nhớ.

var buff = new Buffer(base64data,'base64'); 
console.log(base64data); 

var stream = fs.createWriteStream('/path/to/thefile.png'); 
stream.write(buff); 
stream.on("end", function() { 
    stream.end(); 
}); 
1

tốt hơn:

var buff = new Buffer(base64data,'base64'); 
console.log(base64data); 

var stream = fs.createWriteStream('/path/to/thefile.png'); 
stream.write(buff); 
stream.end(); 
stream.on('finish',() => { 
    //'All writes are now complete.' 
}); 
stream.on('error', (error) => {...}); 
+1

Bạn có thể cung cấp một số chi tiết về các dòng bạn đã thêm không? – jhhoff02

+0

Vui lòng đọc tài liệu về Node.js. –

Các vấn đề liên quan