Я пытаюсь изменить некоторые двоичные данные из моих загруженных изображений на base64, поэтому я могу использовать их для отображения изображения. Но terimal дает мне эту ошибку:Застрял при изменении двоичных данных на base64 (Gridfs-stream)
TypeError: Cannot read property 'on' of undefined
Я не понимаю, когда я отправляю я также использую событие .На и он работает нормально. Кроме того, мне интересно, правильно ли я изменяю данные.
Просьба принять во внимание, что я довольно новый к узлу :)
Как сохранить загруженное изображение (POST)
// Post to profile page
router.post('/', function(req, res, next) {
\t var busboy = new Busboy({ headers: req.headers });
\t busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
\t \t var conn = mongoose.createConnection('192.168.99.100:32773');
\t \t conn.once('open', function() {
\t \t \t var gfs = Grid(conn.db);
\t \t var writestream = gfs.createWriteStream({
\t \t \t filename: filename,
\t \t \t content_type: mimetype,
\t \t \t mode: 'w',
\t \t \t metadata: {
\t \t \t belongs_to: req.session.passport.user
\t \t \t }
\t \t });
\t \t file.pipe(writestream);
\t \t writestream.on('close', function(file){
\t \t \t res.render('profile', {
\t \t \t \t user: req.user,
\t \t \t \t message: req.flash('uploadMessage', 'Your image has been uploaded successfully!')
\t \t \t })
\t \t })
\t \t })
\t })
\t req.pipe(busboy);
});
Здесь я стараюсь для получения изображения и преобразования двоичных данных в base64 (GET)
// GET to index
router.get('/', function(req, res){
\t var conn = mongoose.createConnection('192.168.99.100:32773');
\t conn.once('open', function() {
\t \t var gfs = Grid(conn.db);
\t \t var readstream = gfs.createReadStream({
\t \t \t filename: 'kittendj.jpg'
\t \t });
\t \t readstream.pipe();
\t \t readstream.on('open', function(chunk){
\t \t \t bufs.push(chunk);
\t \t })
\t \t readstream.on('close', function(){
\t \t \t var bufs = [];
\t \t var fbuf = Buffer.concat(bufs);
\t \t var base64 = (fbuf.toString('base64'));
\t \t res.render('index', {
\t \t \t \t isAuthenticated: req.isAuthenticated(),
\t \t \t \t user: req.user,
\t \t \t \t imageSrc: '<img src="data:image/jpeg;base64,' + base64 + '">'
\t \t \t })
\t \t })
\t })
});
Ресурсы Я проверил:
gridfs потока документации
- Display Image in GridFS
- How to retrieve all images from gridFs in a single http Request
- Node.js displaying images from Mongo's GridFS
- nodejs display image stored in gridFS to html
использовать более полуколоны, он может начать работать. – dandavis
@ dandavis Точка с запятой на самом деле необязательна, если я не ошибаюсь, потому что ECMAScript (стандарт для реализации Node.js и браузера JavaScript) имеет функцию автоматической точки с запятой. Поэтому я не уверен, что проблема там, но не стесняйтесь доказать мне, что не так :) – Murderlon