Tag: 二进制

如何使用没有hex_id的MongoDB查找

我在数据库中用_id: "AAE45/0RQfm/VUrywfb1Gw=="查找logging很麻烦_id: "AAE45/0RQfm/VUrywfb1Gw==" (例如db.collection.find( {_id: new BinData(3, "AAE45/0RQfm/VUrywfb1Gw==") }) )。 它在mongo控制台中使用BinData转换器工作正常,但拒绝在JavaScript文件(我使用node.js)内工作,即使我已经安装了BinData npm和“需要”它。 我也尝试过Binary()函数,但它一直告诉我它需要是hex或12字节的二进制或其他东西。 .hex, .str和.toString()也不起作用。 我发现这个地方: {"$binary": "AAE45/0RQfm/VUrywfb1Gw==", "$type": "03"} 看起来很有前途,但我不知道如何实现它。 我希望这是有道理的。 任何build议将非常感激,如果任何人有什么过程我应该遵循(如:转换为二进制,然后hex,然后使用…),这将是太棒了。

如何指定MS Visual Studio版本的nexe?

我试图编译我的node.js项目到使用nexe的二进制文件。 我只有Microsoft Visual Studio 2012,所以编译器抱怨找不到MSVS2010 error MSB8020: The builds tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found. 在nexe的要求部分 ,它提到MSVS2012可以支持,所以我想找出一个方法来指定MSVS版本。 我试过–msversion = 2012在NPM安装,但没有运气。 欣赏任何build议。

node.js中的Memcache正在返回具有不同大小的对象

长期的读者,第一次的海报。 我在OS X 10.7上使用节点v0.6.6。 我还没有在其他任何环境中尝试过。 我正在使用这个客户端: https : //github.com/elbart/node-memcache 当我使用下面的代码时, data随机地包含几个字节(如console.log()所报告的),从而导致这个图像: http : //imgur.com/NuaK4 (和许多其他的JPG都这样做)。 favicon好像确定和HTML / CSS / JavaScript的一切工作。 换句话说:如果我要求图像,约70%的时间图像正确返回; 另外30% – data报告多一些字节,图像在浏览器中出现错误。 client.get(key, function(err, data) { if (err) throw err; if (data) { res.writeHead(200, {'Content-Type': type, 'Content-Length': data.length}); console.log('Sending with length: ' + data.length); res.end(data, 'binary'); } }); 我已经搞了好几个小时,我可以诚实地说我很难过。 我希望有人能以我的方式向我展示错误。 我试图search是否有一种方法来正确存储与memcache的二进制数据,但没有相关的信息。 额外的信息:它发生在各种JPG图像; 所有图像的文件大小都在100-300KB或更less。 […]

将二进制string转换为Node.js中的缓冲区

我有一个Web服务,它采用代表图像的64位编码string,使用imagemagick库创build该图像的缩略图,然后将它们存储在mongodb中。 我用下面的代码(大约)来做这个: var buf = new Buffer(req.body.data, "base64"); //original image im.resize({ srcData: buf, width: 256 }, function(err, stdout, stderr) { this.thumbnail = new Buffer(stdout, "binary"); //store buf and stdout in mongo }); 您会注意到我正在使用“二进制”编码创build一个Buffer对象, 文档说这不是: 'binary' – 通过仅使用每个字符的前8位将原始二进制数据编码为string的一种方法。 此编码方法已弃用,应尽可能避免使用Buffer对象。 此编码将在未来版本的Node中删除。 首先,我不确定他们在那里说什么。 我试图创build一个Buffer对象,他们似乎暗示我应该已经有一个。 其次,问题的根源似乎是imagemagick resize方法返回一个包含二进制数据的string。 做typedef(标准输出)返回“string”,并打印出来的屏幕上,肯定会显示一堆非字符数据。 那么我在这里做什么? 我无法改变imagemagick的工作方式。 有没有另一种做我想做的事情?

为什么我们需要node.js中的缓冲区?

要使用节点在浏览器中显示文件的内容,我首先尝试了这一点: var express = require('express') , fs = require('fs') , app = express() , port = process.env.PORT || 5000; app.use(express.logger()); var data = fs.readFileSync('index.html'); app.get('/', function(req, res){ res.send(data); }); app.listen(port, function(){ console.log('Listenting on ' + port); }); 但是,这并没有如预期的那样工作。 浏览器实际上提供了index.html内容作为文件,我首先必须下载然后在文本编辑器中手动打开。 然后,我尝试使用缓冲区来做同样的事情: var express = require('express') , fs = require('fs') , app = express() , port = […]

node.js服务器不接收所有的二进制数据(或客户端不发送所有的二进制数据)

我对node.js非常陌生,并且遇到了一个可能非常基本的问题,我相信我只是没有“获取”某些东西,但是我们继续: 我有两个节目… server.js是一个简单的express / node.js服务器,它接受二进制数据的POST client.js是一个简单的request / node.js客户端,它将大文件的内容传输到服务器 我一直在淘洗stackoverflow的build议,我想我有一个小问题的例子: 客户: var fs = require('fs'); var request = require('request'); fs.createReadStream('test2.zip').pipe(request.post('http://localhost:3000/')); 服务器: var express = require('express'); var app = express(); app.post('/', function(req, res){ var size = 0; req.on('data', function (data) { size += data.length; console.log('Got chunk: ' + data.length + ' total: ' + size); }); req.on('end', […]

nodejs二进制websocket mimetype处理

我不是100%确定,但从我读的时候,我发送blob(二进制数据)通过websocket,blob不包含任何文件信息。 (官方的规格说明wesockets只发送原始二进制文件) 文件大小 mimetype 用户信息(稍后解释) 我使用https://github.com/websockets/ws testing: 直接从input文件发送blob。 ws.send(this.files[0]) //this should already contain the info 用文件中的原生javascript api创build一个新的blob,设置正确的mimetype。 ws.send(new Blob([this.files[0]],{type:this.files[0].type})); //also this 双方都可以得到没有任何其他信息的有效的blob。 有没有可能追加我们说一个4kb的预定义json数据转换成二进制包含重要的信息,如MIMEtypes和文件大小,然后在需要时分裂4kb? { “MIME”: “TXT /纯”, “大小”:345} ____________ 4KB_REST_OF_THE_BINARY 要么 ws.send({"mime":"txt\/plain","size":345}) ws.send(this.files[0]) 即使第一个是有史以来最糟糕的解决scheme ,它也可以让我一次发送一切。 第二个有一个大问题: 这是一个聊天,可以发送文件,图像,音乐video等文件。 在发送二进制数据之前,我可以在发送文件/用户信息时写一些握手系统。 但 如果另一个人也发送一个文件,因为它是asynchronous的,握手系统没有机会确定哪个文件是正确的用户和mimetype。 那么如何在多用户asynchronous环境下正确发送二进制文件呢? 我知道我可以转换成base64,但是这个30%更大。 顺便说一句。 完全失望与苹果 …虽然铬显示每个二进制数据正常,我的iOS设备无法处理blob的,只有图像将显示blob或base64格式,甚至不是一个简单的txt文件。 基本上只有一个<img>标签可以读取dynamic文件。 一切如何运作(现在): 用户发送一个文件 nodejs获取二进制数据,也是用户信息…但不是mimetype,文件名,大小。 nodejs将原始二进制文件广播给所有用户(不能指定用户和文件信息) 客户端创build一个bloburl(谁发送?XD)。 编辑 我现在有什么: 客户端1 (发送文件)CHROME […]

提取发送到Node.js服务器的请求正文中的二进制数据(一个jpeg图像)

问题解决 你好。 我已经给了一个iPhone应用程序,作为其function的一部分,发送一个请求到服务器与请求正文中的二进制jpeg图像。 我必须find一种方法来读取二进制数据,通过socket.io发送给客户端,并将映像的副本logging到服务器上的磁盘上。 第一次尝试: 我已经尝试了几个方法,没有运气。 首先我试过这个: var http = require('http'); var fs = require('fs'); http.createServer(function (req, res) { console.log("Request In"); var body = ''; req.on('data', function (data) { body += data; }); req.on('end', function () { fs.writeFile("./1.jpeg", body, function(err) { if(err) { console.log(err); } else { console.log("The file was saved!"); } }); }); res.writeHead(200, […]

如何解码“二进制”编码的string到原始二进制缓冲区?

NodeJS的文档强调, binarystring编码是非常不鼓励的,因为它将在未来某个时候被丢弃。 不过,我试图用node-imagemagick模块生成图像缩略图,它只能输出binary编码的string。 我的最终目标是将生成的缩略图作为BLOB提交到SQLite3数据库(我正在使用node-sqlite3 ),所以我想我需要缩略图作为二进制Buffer对象。 如何直接解码node-imagemagick的binary编码输出到一个原始的二进制缓冲区(不只是一个包含binary编码的string的缓冲区)? 我不喜欢使用base64 …

在Node.js上上传二进制文件

我正在使用Flashloggingaudio并将其上传到节点服务器。 Flash客户端是jrecorder的变体。 当用户完成录制时,使用POST请求(不是表单,因为Flash不能创build文件)使用audioByteArray作为POST请求的数据(请参阅此处更多信息 )上传audio。 我能够使用下面的代码在Node-land上正确接收文件,但是出来的audio被破坏,你什么都听不到。 这样说,文件的内容可以播放VLC和其他播放器+ Sox能够编码为MP3。 这是我使用Node时的代码: var express = require('express'); var app = express(); app.use (function(req, res, next) { req.rawBody = ''; req.setEncoding('utf8'); if(req.method.toLowerCase() == "post") { req.on('data', function(chunk) { req.rawBody += chunk }); req.on('end', function() { done(req, res); }); } next(); }); function done(req, res) { fs.writeFile('abc.wav', req.rawBody, 'binary', function(err){ if (err) […]