Articles of 线程

将图像保存为base64,并使用path返回

我有点新的使用NodeJS,这是我第一次创build一个API,我上传一个angular度和ngfile upload到服务器的图像,这个想法是,API接收一个文件,编码它到base64,然后给我的对象与图像的path,然后显示在客户端。 config.js 'use strict' const express = require('express'); const bodyParser = require('body-parser'); const app = express(); const multer = require('multer'); const fs = require('fs-extra'); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization"); res.header("Access-Control-Allow-Methods", "GET,HEAD,POST,PUT,DELETE"); next(); }); app.use('/uploads', express.static("./uploads")); app.use(bodyParser.json()); var storage = multer.diskStorage({ //multers disk […]

Node.js单线程VS Tranditonal webserver线程池

我是node.js的新手 目前我正在阅读由Basarat Ali Syed撰写的 “ Beignning Node.js ”。 以下是摘录自传统Web服务器线程池的缺点: 大多数Web服务器使用线程池这种方法几年前,许多继续使用今天。 但是,这种方法不是没有缺点。 线程之间的内存浪费了。 另外,操作系统需要在线程之间进行上下文切换(即使它们处于空闲状态),这会导致浪费CPU资源。 我不太明白为什么在线程池内的线程之间有上下文切换。 据我所知,一个线程将在任务期间持续。 一旦任务完成,线程将自由地接收下一个任务。 所以我的Q1 :为什么需要上下文切换? 线程之间的上下文切换何时发生? 我的Q2 :为什么node.js不使用多个线程来处理事件队列中的事件? 这不是更有效率,并减less事件的排队时间?

在res.redirect中未定义 – express,request,fs,node-uuid,path和multer

我试图redirect用户到签名路线,传递文件名作为URL参数,他告诉我,他是未定义的… 上传后将示例文件作为URL参数。 http://localhost:3000/undefined?arquivo-assinado=82a35943-5796-4d9b-b397-80d8942b6c65.pdf Side-nav选项点击redirect到模板 api.get("/company-parallel-and-branch", function (req, res) { var path = __dirname + '/routes/company-parallel-and-branch/'; res.sendFile(path + "company-parallel-and-branch.html"); require('./digital-certificate/authentication'); require('./digital-certificate/pades-signature'); }); app.js var http = require('http'); var express = require('express'), mongoose = require('mongoose'), ejs = require('ejs'), nunjucks = require('nunjucks'), path = require('path'), mysql = require('mysql'), bodyParser = require('body-parser'), methodOverride = require('method-override'), logger = require('morgan'), io […]

使用multer将图像上传到Node.js不起作用

我正尝试将图像上传到node.js express bodyParser需要一个中间件来处理图像文件,否则它会回复 令牌undefine 我使用Multer作为中间件,就像这样说,req.file应该打开一个信息数组,比我可以使用req.file.image.path获取文件path和其他信息,比我可以将它保存为一个文件。 这里是这个问题,我从邮递员上传图片,我只写了console.log(req.file) ,显示为undefined 。 如果我尝试写req.file.image.path来获取文件path,错误是image undefined ,好像我没有使用multer,所以req.file没有保存数据信息,我应该创build一些临时文件夹来彻底或…? app.js var express = require('express') ,bodyParser = require('body-parser') ,app = express() ,multer = require('multer') ,binary = require('binary') ,fs = require('fs') ,util= require('util') ,http = require('http') ,multer = require('multer') ,upload = multer({ dest: '/Node/file-upload/uploads/' }); app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies. app.use(bodyParser.json({limit: '5mb'})); […]

Express 4 Multer / req.body和res.json未定义

我试图做一个单一的图像文件+文本字段上传使用Express 4.0和multer 1.1.0。 图像文件本身正确上传到正确的目的地,但我得到的文本字段和响应错误: 1)如果login控制台,multer的req.body req.file对象是未定义的 2)res.json(也testing时res.send)得到错误 – TypeError:res.json不是在Object.handle函数) multer的configuration如下,使用moment.js作为date,这几乎是来自multer Github文档的line-for-line: //standard express-generator server.js requires //passport.js implementation var multer = require('multer'); var storage = multer.diskStorage({ destination: function(req, file, cb){ cb(null, './public/photoUploads/' + moment().year() + moment().month()); }, filename: function(req, file, cb){ cb(null, req.user._id + moment().unix()); } }) var upload = multer({storage:storage}); require('./app/routes.js')(app, passport); //passport login routes […]

使用Multer上传文件,而不知道他们的字段名

看完这篇文章后: http : //lollyrock.com/articles/express4-file-upload/ 我已经意识到,当你不知道正在上传的表单字段的名称时,Multer曾经允许file upload。 例如,如果您查看文章的“使用Multer”部分,您会发现在调用app.use()时,作者不会使用.single() .array()或app.use() 。 如果你使用当前版本的Multer,你会得到TypeError: app.use() requires middleware functions错误TypeError: app.use() requires middleware functions 。 虽然我对如何使用.single() .array()或.array()有一个小小的想法,但是我目前的项目需要我发送一个非特定数量的文件到我的服务器(可能是一系列的.png或.log文件)。 因此,我不知道字段名称是什么。 在文章(0.1.6)中使用Multer的版本很容易,但在当前版本的Multer(1.0.3)中尝试使用它时似乎是不可能的,因为您需要指定表单字段名称。 或者,在网上findMulter的完整指南一直是一个挑战,因为最好的一个似乎是GitHub回购的自述,而且似乎缺乏。 也许我正在寻找的答案将在某个地方的指导。 谢谢!

当Multer的文件过大时如何向客户端发送响应

我正在使用NodeJs Multer上传文件。 当文件用户尝试上传时,我需要将响应发送回客户端。 问题是, onFileSizeLimit只有文件作为参数,我不知道如何发送响应客户端。 我需要做的是基本如下所示: app.use('/users/gyms/upload-logo', multer({ // other settings here then: onFileSizeLimit: function (file) { // but res (response) object is not existing here res.json({ message: "Upload failed", status: MARankings.Enums.Status.FILE_TOO_LARGE // status: -6 }); } }); 在那里存在的res对象剂量,我想知道什么是最好的方式发送某种types的响应客户端。

在快速路由器内使用Muller进行file upload

我使用node.js和Express构build了一个可用的REST-API。 现在我需要一个file upload端点,它接受上传的文件并处理它们。 我正在使用Express路由器和一些身份validation中间件。 server.js(节选) var router = express.Router() app.use("/api", router) […] router.use(function(req, res, next) { //Authentification middleware […] next() }) router.route("/upload") .post(function(req, res){ //upload logic }) 我如何使用multer作为req.file (或如此)提供上传的文件,但仅在/ api /上传和authed用户?

事件驱动和基于线程的服务器系统有什么区别?

Node.js是一个事件驱动的I / O,它是一个单线程的服务器,对callback起作用,永远不会阻塞主线程。 但是它是如何处理非阻塞I / O的呢? 如果它确实容易pipe理,为什么不基于线程的系统pipe理呢? 不像其他线程(在单个事件驱动线程之后)像基于线程的工作? 如果其他线程表示工作者(在事件驱动线程后面)忙碌,那么它仍然可以不受阻塞地处理工作? 基于线程的模型将任务分配给线程,如果没有空闲线程,则阻止新任务。 如果一个线程可以像处理每个I / O而没有阻塞的事件驱动的单线程一样处理多个任务,那么为什么基于线程的系统在忙线程中不使用这种策略来阻塞I / O。 我想知道事件驱动和基于线程的服务器系统有什么区别( 优点/缺点 )。

使用app.use的configuration器会返回TypeError

我正在尝试在我的app.js文件(使用node.js / express)中configurationmulter以允许用户上传图像。 我在app.js中有以下代码: //various require statements for passport, cookie parser, etc.. var multer = require('multer'); var app = express(); app.use(multer({dest:'./uploads/'})); 当我尝试运行应用程序时,我得到TypeError: app.use() requires middleware functions 我知道这个问题可能需要一些关于我的应用程序的上下文,所以请让我知道是否需要额外的信息。 谢谢 编辑:更多来自app.js的代码: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var bodyParser = require('body-parser'); var methodOverride = require('method-override'); var session […]