簡體   English   中英

堅持將二進制數據更改為base64(Gridfs-stream)

[英]Stuck at changing binary data to base64 (Gridfs-stream)

我正在嘗試將一些二進制數據從上傳的圖像更改為base64,以便可以使用它來顯示圖像。 但是三進制給我這個錯誤:

TypeError: Cannot read property 'on' of undefined

我不明白,我發帖時也使用.on事件,它工作正常。 除此之外,我想知道是否正確更改了數據。

請考慮到我對節點還不熟悉:)

我如何保存上傳的圖片(POST)

 // Post to profile page router.post('/', function(req, res, next) { var busboy = new Busboy({ headers: req.headers }); busboy.on('file', function(fieldname, file, filename, encoding, mimetype) { var conn = mongoose.createConnection('192.168.99.100:32773'); conn.once('open', function () { var gfs = Grid(conn.db); var writestream = gfs.createWriteStream({ filename: filename, content_type: mimetype, mode: 'w', metadata: { belongs_to: req.session.passport.user } }); file.pipe(writestream); writestream.on('close', function(file){ res.render('profile', { user: req.user, message: req.flash('uploadMessage', 'Your image has been uploaded successfully!') }) }) }) }) req.pipe(busboy); }); 

在這里,我嘗試獲取圖像並將二進制數據轉換為base64(GET)

 // GET to index router.get('/', function(req, res){ var conn = mongoose.createConnection('192.168.99.100:32773'); conn.once('open', function () { var gfs = Grid(conn.db); var readstream = gfs.createReadStream({ filename: 'kittendj.jpg' }); readstream.pipe(); readstream.on('open', function(chunk){ bufs.push(chunk); }) readstream.on('close', function(){ var bufs = []; var fbuf = Buffer.concat(bufs); var base64 = (fbuf.toString('base64')); res.render('index', { isAuthenticated: req.isAuthenticated(), user: req.user, imageSrc: '<img src="data:image/jpeg;base64,' + base64 + '">' }) }) }) }); 

我檢查的資源:

我也在尋找從gridfs讀取圖像的解決方案,並且我正在使用grid-fs strem

這是我找到的解決方案,希望對您有幫助。

//設置gridfs

import mongoose from 'mongoose';
import Grid from 'gridfs-stream';

const db = mongoose.connection.db;
const mongoDriver = mongoose.mongo;
const gfs = new Grid(db, mongoDriver);

//將圖像寫入mongo

const writeStream = gfs.createWriteStream({
  filename: 'test.png',
  content_type: 'image/png',
});
fs.createReadStream(filePath).pipe(writeStream);

writeStream.on('close', (gfsFile) => {
  // remove the original file
  fs.unlink('test.png');
  // this is the information, and _id is the id 
  console.log(gfsFile);
});

//將圖像讀取到mongo

const readstream = gfs.createReadStream({
  _id: id,
});

const bufs = [];
readstream.on('data', function (chunk) {
  bufs.push(chunk);
});
readstream.on('end', function () {
  const fbuf = Buffer.concat(bufs);
  const base64 = fbuf.toString('base64');
  console.log(base64);
});

請檢查我創建的此Github存儲庫,以上傳圖像並將結果返回為base64。 https://github.com/houssem-yahiaoui/fileupload-nodejs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM