Tag: 缓冲区

gm aws lambda中的错误:string产生空的缓冲区

我尝试使用亚马逊lambda进行自动定位转换后上传一个缓冲区到s3。 我从一个Nodejs api发送缓冲区如下所示: var data = request.payload; if (data.file) { var Media = request.server.plugins.dogwater.media; var name = data.file.hapi.filename; var local_path = "./uploads/" + name; var file = fs.createWriteStream(local_path); console.log('adding media…') file.on('error', function(err) { console.error(err) }); data.file.pipe(file); data.file.on('end', function(err) { var pic = { gallery_id: request.params.gallery_id, type: 1 }; console.log("\n\n\ndata.file = ",data.file) Media.create(pic) .then(function(media) { httpRequest({ […]

Webshot到谷歌驱动器,而不使用缓冲区或stream存储中间文件?

TL;博士 我目前正尝试使用网页截图获取屏幕截图,并将其上传到Google云端硬盘, 而不 会将 文件保存到文件系统作为此过程中的中间步骤。 任何代码 – 无论采用哪种方式 – 都可以让我做到这一点,是最受欢迎的! 我试过了 我能够通过从webshot保存文件然后将该file upload到Google Drive来本地运行系统,但是在我使用的服务器环境(Elastic Beanstalk)上这是不可能的,我想避免这种混乱。 Webshot允许stream式传输屏幕截图。 这里是他们的示例代码: var webshot = require('webshot'); var fs = require('fs'); var renderStream = webshot('google.com'); var file = fs.createWriteStream('google.png', {encoding: 'binary'}); renderStream.on('data', function(data) { file.write(data.toString('binary'), 'binary'); }); 但是,这似乎达到了只是写入文件相同的目的。 Google Drive,在他们的google-api-nodejs-client (我使用)允许将主体设置为可读stream。 这里是他们的示例代码: var fs = require('fs'); var drive = google.drive({ version: […]

循环二进制Float64Array文件 – NodeJS

我有100个CSV文件,每个约50.000.000行,每个包含3个单元格。 每行需要触发一个事件来做一些计算。 使用npm read-line lib,通过pipe道读取CSV,我可以每秒处理大约1000000个周期(1节点线程)。 但是这个过程做了很多步骤,只是为了得到一些数字 打开.csv文件stream 将每个块串联起来 在块中search新行\ n 将该行分割成一个数组(3个单元格) parseFloat每个单元格 所以要parsing它们甚至更快,我虽然将csv文件转换为二进制文件可以帮助。 所以我创build了一个二进制Float64Array缓冲区文件,因为单元格中的所有值都是浮点数。 let counter = 0 ;; rows.forEach(function (row) { row.forEach(function(cell) { buffer.writeDoubleLE(cell, counter++ * Float64Array.BYTES_PER_ELEMENT); }) }); writeStream.write(buffer) writeStream.end() 那么它只需要做这个步骤 打开.bin文件stream 将每个stream缓冲区块(chunk = 3个单元格)转换为ArrayBuffer到Array64Float fs.createReadStream(fileName, {highWaterMark: 24}) //.pause() .on('data', chunk => { //this._stream.pause(); this._bufferOffset = 0; this.emit('tick', new Float64Array(chunk.buffer, chunk.byteOffset, chunk.byteLength / […]

Javascript从缓冲区到JSON

我正在使用bleno(一个节点js BLE包),它使用缓冲区发送和接收数据。 我将如何去获取一个Buffer对象并将其转换为JSON? 这就是我现在所拥有的: bufferToJson = buffer.toString(); bufferToJson = JSON.stringify(bufferToJson) bufferToJson = JSON.parse(bufferToJson) 缓冲区是数据的地方。 什么缓冲区的例子是{cmd:'echo'}我已经尝试了bufferToJson.cmd并且只获取undefine。 谢谢。

NodeJS MYSQL查询结果缓冲区?

mysqlselect查询结果… //nodejs database.js var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'me', database : 'test', password : '1234' }); // nodejs app.js app.get('/api/v0.1/getPostList', function(req, res) { limit_count = 5; db.query(postModel.postList(limit_count) , function(err, rows) { if (err) throw err; console.log(rows) res.json(rows); }); }); //result RowDataPacket { POST_SEQ: 13, POST_TYPE: <Buffer 31 […]

我对密码散列有什么误解?

这是我的理解,一个哈希函数将始终返回相同的结果时,提供相同的数据。 但是我一直在使用libsodium(通过节点钠),这不是发生了什么事情。 我在我的模式中有这个: UserSchema.pre('save', function(next) { // declare my variables let user = this, buf = Buffer.alloc(sodium.crypto_pwhash_STRBYTES, 'ascii'), passwordBuf = Buffer.from(user.password, 'ascii'), saltedPassBuf, hash; // only hash the password if it has been modified (or is new) if (!user.isModified('password')) return next(); // generate a salt sodium.randombytes_buf(buf, sodium.crypto_pwhash_STRBYTES, 'ascii'); // add salt to the password saltedPassBuf […]

任何人都可以解释这些function的论点?

我正在使用NodeJs并尝试写入和读取二进制文件。 我用NodeJs文档头痛,没有提供太多的解释。 特别是我想知道 fs.writeSync(fd, buffer, offset, length, position) 我知道'fd'和'buffer',但是与​​'offset'和'position'混淆了。 fs.readSync(fd, buffer, offset, length, position) 我猜这个是一样的 可以有人向我解释吗? 谢谢

如何使用NodeJS输出PDF缓冲区到浏览器?

所以我使用html-pdf来转换我的html,这里是我的代码: var pdf = require('html-pdf') var html = 'somehtmlfile.html' pdf.create(html).toBuffer(function (err, buffer) { if (err) { console.log(err) } else { console.log(buffer) var pdfBuffer = new Buffer(buffer) res.setHeader('Content-disposition', 'inline; filename="test.pdf"'); res.setHeader('Content-type', 'application/pdf'); res.send(pdfBuffer) } } 我没有得到任何PDF文件下载,也没有在浏览器中的PDF文件的任何输出。 console.log(buffer)是这样的: <Buffer 25 50 44 46 2d 31 2e 34 0a 31 20 30 20 6f 62 6a 0a 3c […]

如何使用节点js缓冲区和转换映射

我正在关注一个关于nodejs的教程。 在教程中有这个例子: const fs = require('fs'); const conversionMap = { '88': '65', '89': '66', '90': '67', }; fs.readFile(__filename, (err, buffer) => { let tag = buffer.slice(-4, -1); for(let i=0;i < tag.length; i++) { tag[i] = conversionMap[tag[i]]; } console.log(buffer.toString()); }); // TAG: XYZ 我很确定我知道这个例子在做什么。 它正在读取文件,然后将其分配给一个缓冲区并写出来。 我知道它通过slice(-4, -1)find了TAG slice(-4, -1)从底部开始标记1并且结束)。 我只是不确定它会改变它。 先谢谢您的帮助!

Slow Buffer.concat

当我以64Kb的片段读取一个16MB的文件,并且在每个片断上执行Buffer.concat时,后者certificate是非常慢的,需要整整4秒才能完成。 有没有更好的方法来连接Node.js中的缓冲区? 使用Node.js版本:7.10.0,在Windows 10下(均为64位)。 在研究以下问题时会询问这个问题: https : //github.com/brianc/node-postgres/issues/1286 ,这会影响到大量的观众。 PostgreSQL驱动程序以64Kb的块读取较大的bytea列,然后连接它们。 我们发现调用Buffer.concat是在这样的例子中性能巨大的损失背后的罪魁祸首。