Tag: 二进制文件

node.js使用Ajax读取二进制数据

在BE服务器中,我发送binarystring到FE服务器。 Binarystring在responseText中。 //So. I do this.\ xhr2.open('GET', url, true); xhr2.onload = function() { routeResponse = Buffer.from(xhr2.responseText, 'binary'); //init Buf = ''; //byte by byte output for (let i = 0; i < routeResponse.length; i++) { Buf += routeResponse.readUInt8(i).toString(16).toUpperCase(); Buf += ' '; } console.log(Buf); } 但是在日志和原始的cgi文件中是不同的二进制数据。 左:console.log(Buf)/右:原始文件中的hex值。 ex)getRoute.cgi 奇怪的是,只有某些值被输出为“FD”。 实际数据是'8B','8C'等等。 CGI文件格式:二进制/ Little Endian。 为什么某些数据被replace为“FD”请为我回答。 谢谢。

编译node.js使用二进制文件有什么好处?

我一直在寻找这个问题的答案。 我最近了解到由于编译器过期而无法在系统上编译节点的情况。 我注意到来自节点网站的二进制文件在系统和Docker容器上工作得很好。 那么我从源代码编译的好处是什么?

Nodejs二进制httpstream

我需要从客户端(nodejs命令行)和服务器(express nodejs)stream式传输文件。 这是客户端: var request = require('request'); var fs = require('fs'); // … var readStream = fs.createReadStream(file.path); readStream.on('end', function() { that.emit('finished'); }); readStream.pipe(request.post(target)); // … 这是服务器端: var fs = require('fs'); var path = require('path'); // … app.post('/:filename', function(req, res) { req.setEncoding('binary'); var filename = path.basename(req.params.filename); filename = path.resolve(destinationDir, filename); var dst = fs.createWriteStream(filename); req.pipe(dst); req.on('end', […]

使用AngularJS从Node.JS服务器下载文件

我想从使用NodeJS运行的服务器下载浏览器的文件。 在服务器端,为服务文件我有: exports.download = function(req, res) { var filename = "33.jpg"; var filePath = path.join(__dirname, '..', '..', 'downloads', filename); var stat = fs.statSync(filePath); var fileToSend = fs.readFileSync(filePath); res.writeHead(200, { 'Content-Type': 'image/jpeg', 'Content-Length': stat.size, 'Content-Disposition': filename }); res.end(fileToSend); }; 存在名为33.jpg的文件,大小为744Kb。 来自客户的电话很棒 在AngularJS的客户端这里是我如何打电话来获取文件(目前参数uri不使用): $scope.downloadTrack = function(uri) { $http.post('/api/files/download', {uri: uri}).then(function(response) { var blob = new Blob([response.data], { […]

在Node.js中读取subprocess中的二进制数据

当试图从ImageMagicksubprocess中读取Node.js中的数据时,它会被破坏。 一个简单的testing案例如下: var fs = require('fs'); var exec = require('child_process').exec; var cmd = 'convert ./test.jpg -'; exec(cmd, {encoding: 'binary', maxBuffer: 5000*1024}, function(error, stdout) { fs.writeFileSync('test2.jpg', stdout); }); 我希望这是相当于命令行convert ./test.jpg – > test2.jpg ,正确写入二进制文件。 最初,maxBuffer选项太小,导致截断的文件出现问题。 增加后,文件现在看起来比预期的稍大,仍然损坏。 标准输出的数据需要通过HTTP发送。 从ImageMagick stdout中读取这些数据的正确方法是什么?