Tôi đã tìm thấy các bài đăng gần với những gì tôi đang tìm kiếm, nhưng tôi đã không thể triển khai thành công những gì tôi muốn. Đây là dòng chảy chung:Chuyển đổi hình ảnh Base64 thành nhị phân thô với Node.js
- Gửi ảnh với phần còn lại của dữ liệu địa điểm, như dữ liệu base64
- Strip tiền tố dữ liệu nếu nó tồn tại, vì vậy tôi chỉ có dữ liệu hình ảnh base64
var base64data = venue.image.replace(/^data:image\/png;base64,|^data:image\/jpeg;base64,|^data:image\/jpg;base64,|^data:image\/bmp;base64,/, '');
- Lưu trữ dữ liệu Base64 trong GridFS qua MongoDB (Tôi đang sử dụng gridfstore)
- Sau đó, tôi muốn truy xuất hình ảnh theo yêu cầu dưới dạng tệp hình ảnh thô qua URL.
// generic images route
server.get(version+'/images/:id', function(req, res) {
gridfstore.read(req.params.id, function(error,data) {
res.writeHead(200, {
'Content-Type': 'image/jpeg',
'Content-Length': data.buffer.length
});
res.end(data.buffer);
});
});
Về cơ bản, phương pháp này sẽ trả về Base64 byte lưu trữ trong GridFS. Tôi đã thử các phương pháp khác nhưng chúng không trả về hình ảnh thô.
Tôi muốn kéo lên hình ảnh sử dụng URL như thế này:
http://[localhost]/1/images/11dbcef0-257b-11e3-97d7-cbbea10abbcb
Đây là một ảnh chụp màn hình của các dấu vết trình duyệt:
cảm ơn @hexacyanide, tôi đã thử những gì bạn đề xuất nhưng nó sẽ trở lại như một hình ảnh không hợp lệ. Bộ đệm được phân bổ chính xác và độ dài chính xác nhưng hình ảnh không hiển thị, vì vậy tôi sẽ đào sâu hơn một chút và xem liệu tôi có thể cung cấp thêm thông tin hay không. Khi tôi lấy dữ liệu Base64 URI, và hiển thị nó trong trang HTML với
nó hoạt động, vì vậy ít nhất tôi biết Base64 là hợp lệ. –
remotevision
Vì vậy, bạn đang cố gắng làm gì? Bạn đang cố gắng chỉ hiển thị hình ảnh trên một trang? – hexacyanide
Tôi đang cố gắng trả lại hình ảnh, giống như bạn sẽ gọi http: // [somehost] /someimage.jpg. Tôi đã đính kèm một ảnh chụp màn hình nếu nó giúp gì cả. Với mã bạn đề xuất, trình duyệt chỉ cần đồng hồ. Ngoài ra, tôi đang sử dụng Restify trên máy chủ nhưng từ những gì tôi đã đọc, nó hỗ trợ Node.js ServerResponse. http://mcavage.me/node-restify/#Content-Negotiation – remotevision