Sử dụng nút v0.2.0 Tôi đang cố tìm nạp hình ảnh từ máy chủ, chuyển đổi hình ảnh thành chuỗi base64 rồi nhúng nó vào trang trong thẻ hình ảnh. Tôi có đoạn mã sau:Node.js base64 mã hóa hình ảnh đã tải xuống để sử dụng trong dữ liệu URI
var express = require('express'),
request = require('request'),
sys = require('sys');
var app = express.createServer(
express.logger(),
express.bodyDecoder()
);
app.get('/', function(req, res){
if(req.param("url")) {
var url = unescape(req.param("url"));
request({uri:url}, function (error, response, body) {
if (!error && response.statusCode == 200) {
var data_uri_prefix = "data:" + response.headers["content-type"] + ";base64,";
var buf = new Buffer(body);
var image = buf.toString('base64');
image = data_uri_prefix + image;
res.send('<img src="'+image+'"/>');
}
});
}
});
app.listen(3000);
Lưu ý: Mã này đòi hỏi "express" và "request". Và tất nhiên, node. Nếu bạn đã cài đặt npm, nó phải đơn giản như "npm install express" hoặc "npm install request".
Thật không may, điều này không hoạt động như mong đợi. Nếu tôi làm việc chuyển đổi với Google logo, sau đó tôi nhận được sau khi bắt đầu của chuỗi:
77 + 9UE5HDQoaCgAAAA1JSERSAAABEwAAAF8IAwAAAO +/ve +/ve +/vSkAAAMAUExURQBzCw5xGiNmK0t + U ++/vQUf77 + 9BiHvv70WKO +/vQkk77 + 9D
Tuy nhiên nếu tôi sử dụng trực tuyến Base64 encoder với cùng một hình ảnh, thì nó hoạt động hoàn hảo. Chuỗi bắt đầu như thế này:
iVBORw0KGgoAAAANSUhEUgAAARMAAABfCAMAAAD8mtMpAAADAFBMVEUAcwsOcRojZitLflOWBR + aBiGQFiipCSS8DCm1Cya1FiyNKzexKTjDDSrLDS
đâu tôi đi sai rằng điều này không làm việc một cách chính xác? Tôi đã thử rất nhiều triển khai base64 js khác nhau và tất cả chúng đều không hoạt động theo cùng một cách. Điều duy nhất tôi có thể nghĩ đến là tôi đang cố gắng chuyển đổi điều sai thành base64, nhưng tôi nên chuyển đổi điều gì nếu trường hợp đó xảy ra?
Cảm ơn, điều này có hiệu quả nhưng tôi thực sự không thích ý tưởng chỉnh sửa gói yêu cầu để làm cho nó hoạt động. Làm thế nào chính xác bạn sẽ thực hiện một đối tượng Writable Stream? Tôi không thể tìm ra cách để tạo ra nó. Bất kỳ trợ giúp sẽ được thực sự đánh giá cao! – betamax
Tìm thấy triển khai luồng có thể ghi được tốt đẹp tại http://github.com/substack/node-bufferlist. Đây là phiên bản cập nhật của mã không cần phải sửa đổi thư viện yêu cầu: http://gist.github.com/583836. – bxjx
phù hợp với bạn? – bxjx