Nodejs 和 Express 中的 Multer 图像上传

2024-03-22

几天来我一直在尝试使用 Multer 上传图像。这就是我已经走了多远。我尝试了多种方法,但似乎无法使其发挥作用。我不知道如何使用 Multer 在 createUser 函数中按如下所示的格式上传图像。

我的“server.js”文件:

var express = require('express');
var multer = require('multer');
var upload = multer({dest: 'uploads/'});
var router = require('./app/routes');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var session = require('client-sessions');
var DB_URI = "mongodb://localhost:27017/portfolio";
var app = express();
var path = require('path');
var fs = require('fs');
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended:false}));
app.use(express.static(__dirname+ '/public'));
app.use(session({
  cookieName: 'session',
  secret: 'random_string_goes_here',
  duration: 30 * 60 * 1000,
  activeDuration: 5 * 60 * 1000,
}));

mongoose.connect(DB_URI);
app.use(router);

app.listen(8080, function(){
    console.log("server is listening on port 8080");
})

我的“routes.js”

var express = require('express');
var router = express.Router();
var projectController = require('./controllers/projectController');
var userController = require('./controllers/userController');
router.post('/regUser', userController.createUser);

我的“index.ejs”

<form class="form inv" method="POST" action="/regUser" id="reg_form">
          <h3 style="margin-bottom:40px;">Register</h3>
          <!-- <input type="file" name="file"/> -->
          <input type="text" class="form-control" name="name" placeholder="Name"/>
          <input type="text" class="form-control" name="username" placeholder="Username"/>
          <input type="text" class="form-control" name="email" placeholder="Email"/>
          <input type="password" class="form-control" name="password" placeholder="Password"/>
          <input type="file" name="userPhoto"/>
          <input type="submit" class="btn btn-default" value="Submit"/>
        </form>

我的 userController.js

createUser: function(req, res){
//add code to create user AND upload image
}

有两个问题。

首先:您的表单没有设置 enctype 属性。enctype="multipart/form-data"需要提交文件才能工作。

第二:你需要multer,但你没有使用它。添加这个

app.use(multer({ dest: '/tmp/'}).single('userPhoto'))

(或用另一种方法(查看文档 https://www.npmjs.com/package/multer), like .array() or .fields())

然后您可以访问该文件createUser()像这样:

createUser: function(req, res){
    console.log(req.file); // this displays the userPhoto's properties
    fs.readFile(req.file.path, function (err, data) {
        // do something with the file data
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nodejs 和 Express 中的 Multer 图像上传 的相关文章

  • MongoDB,从数组中删除对象

    Doc id 5150a1199fac0e6910000002 name some name items id 23 name item name 23 id 24 name item name 24 有没有办法从数组中提取特定对象 IE
  • 减少非常大图像的文件大小,而不改变图像尺寸

    考虑一个处理可能非常大的 PNG 文件上传的应用程序 所有上传的文件必须存储到磁盘以供以后检索 但是 PNG 文件的大小最大可达 30 MB 但磁盘存储限制规定每个文件的最大大小为 1 MB 问题是获取文件大小高达 30 MB 的输入 PN
  • Nodejs - 处理和发送多部分请求,

    我的应用程序在 Nodejs 服务器上运行 Node Js 还充当来自应用程序的请求的中间件 代理 因此 从浏览器开始 所有 REST 调用都会转到 NodeJs 然后转到 Java API 我发现处理多部分表单数据的请求时出现问题 我在
  • Angular2 + Laravel 与实时和 WebSockets

    我构建了一个应用程序 并计划与 Angular 2 和 laravel 进行实时战斗 例如 你按下 攻击 按钮 你的对手就会实时看到他的生命在下降 我的应用程序构建有 前端 角2 Backend PHP Laravel 5 2 现在我正在寻
  • Typescript 找不到模块

    我在 Typescript 的一个文件 upload ts 中有一个导出的模块 我无法在没有错误的情况下导入到另一个文件 application ts 中 另外 我无法导入 ExpressJS 这是Upload ts
  • 我应该如何在http post请求的请求负载中传递json数据

    我想知道如何在有效负载中传递 json 请求 例如 name test value test var post data var post options host this host path path method POST heade
  • 如何检测和测量 Node.js 中的事件循环阻塞?

    我想监视 node js 中事件循环每次运行需要多长时间 但是我不确定衡量这一点的最佳方法 我能想到的最好的方法是这样的 var interval 500 var interval setInterval function var last
  • Java - 调整图像大小而不损失质量

    我有 10 000 张照片需要调整大小 因此我有一个 Java 程序来执行此操作 不幸的是 图像的质量损失很大 而且我无法访问未压缩的图像 import java awt Graphics import java awt AlphaComp
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • PHP - 获取base64图像字符串解码并保存为jpg(生成空图像)

    嗨 我实际上是通过 ajax 发送一个 base64 图像字符串到一个 php 脚本 该脚本只是解码字符串并将内容保存为 jpg 文件 但结果是一张空图像 这怎么可能 PHP脚本 uploadedPhotos array photo 1 p
  • npm install 命令下载所需包的源位置是什么?

    我试图获取命令 npm install 尝试连接的源位置 URL 并根据 package json 文件获取要下载的依赖包 并将其放置在本地框中 从下面提到的网址 http www tutorialspoint com nodejs nod
  • Node.js 检测两个猫鼬查找何时完成

    我正在尝试使用自动完成功能初始化两个输入library https www devbridge com sourcery components jquery autocomplete 当我加载页面时 我将触发 Ajax 来初始化两个输入文本
  • 如何在 Node-Red 中的 oneditsave 之后在下拉列表中显示先前选择的值(动态)?

    我有一个自定义节点 其中包含两个彼此独立的下拉菜单 因此 第二个下拉列表值会根据第一个下拉列表中选择的值发生变化 我现在尝试的是 用户拖动我的自定义节点 iotinput 从两个拖放中选择值 按下并单击 完成 他再次拖动另一个自定义节点 i
  • 获取对象数组中每个嵌套对象的虚拟属性?

    所以我知道如何获取单个虚拟属性 如 Mongoose 文档中所述 PersonSchema virtual name full get function return this name first this name last 但如果我的
  • 当我使用 Image.FromFile() 时 FileNotFound

    我在这种情况下使用 Image FromFile string 方法 using System using System Collections Generic using System ComponentModel using Syste
  • 如何使使用 css 调整大小的图像在 IE 中看起来不错?

    当使用 css 宽度 高度或属性宽度 高度缩放图像时 IE6 和 IE7 无法很好地缩放网页中的图像 我不确定它默认使用哪种算法 但这不好 在这些浏览器中缩放时 缩放图像会显示锯齿伪影 幸运的是 有一种方法可以通过简单的 css 规则强制
  • Mongoose 独特的验证不起作用。保存重复条目

    我正在开发一个 NodeJS 应用程序 其中express是框架 MongoDB是数据库 我正在使用猫鼬插件 我有一个父母模型 我已经添加了独特 真实到场 mobile 但是每当我添加相同的手机号码时 唯一性验证就会失败 除了保存重复的文档
  • 使用 CSS 的响应式图像

    我发现调整图像大小以使其具有响应能力很棘手 我正在开发一个 php 应用程序来自动将网站转换为响应式版本 我有点被图像困住了 我已经成功地为网站上的每个图像添加了一个包装类 并且可以很好地调整图像的大小 我的问题在于自然小于窗口的图像 例如
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np
  • JavaFX ImageView 未更新

    因此 我尝试将图像加载并保存到 imageView 中 其中图像的位置是通过文件浏览器选择的 我已经为此工作好几天了 如果我不能解决这个问题 我就会中风 我已经尝试了我能想到的一切 预先感谢您的帮助 UPDATED 这是我的主要课程 pub

随机推荐

  • 是否可以使用 flutter 相机插件流式传输视频?

    我一直在使用相机插件 我知道可以通过CameraController与功能start stopVideoRecording 这些函数将采用文件的路径作为输入 我希望能够在录制时将该视频流式传输到服务器 是否可以通过相机插件的当前功能以某种方
  • 如何控制画布对象的 z-index?

    当我在画布上绘制一些对象时 有时新对象会放在旧对象下面 例如 我将一些图像添加到画布上 然后画一条线 当我运行代码时 图像位于最上面 我在网上搜索了解决方案 但没有一个直接的解决方案 在某些情况下 它被视为资源管理器中的一个错误 我如何控制
  • 如何在玩笑测试中模拟 json.parse()

    我的代码中有一个 try catch 当代码落入catch它的一部分命中了 JSON parse catch err JSON parse err message 代码可以工作 但测试失败 测试只是断言尝试中发生了一些事情 try popU
  • 如何展开到导航堆栈上的第一个视图控制器

    我在将视图展开到登录屏幕时遇到问题 故事板结构如下 故事板结构 https i stack imgur com Ea1t8 png 该应用程序的用户流程如下 用户在 LoginVC 上登录 gt 通过模态 Segue 进入主选项卡栏屏幕 g
  • 环境变量不会从 .htaccess 传递到 PHP

    我正在尝试将环境变量从 htaccess 传递到 PHP 这在我的本地 WAMP 服务器上工作得很好 但在托管我的网站的服务器上 它无缘无故地失败了 这是我的测试配置 htaccess SetEnv TEST VARIABLE test v
  • 具有大状态的 erlang gen_server

    我有一个包含数千个条目的特里树 用元组和列表实现 我想支持并发读取 数据的内存占用量在 10 20 MB 范围内 特里树被构建一次 之后只读 维护状态并为客户端提供并发访问的推荐方法是什么 这是我尝试过的 1 创建一个gen server
  • 如何在 Xamarin Forms 中从 ViewModel 设置焦点

    我想要设定焦点 in a SearchBox进行一些异步操作后进行控制 我想这样做from my 视图模型 我怎样才能做到这一点 EDIT 视图模型代码 private bool searchBarFocused public bool S
  • PHP 代码不允许通过我的表单发送多个输入值

    我正在使用我构建的应用程序碰壁 我是 PHP 新手 不到 1 个月 我在导师的帮助下编写了一个非常复杂的表单 由于保密协议 我无法在此处发送完整代码作为示例 具体来说 我遇到的问题是我的表单无法将多个值发送到两个不同的输入 槽 它将向数据库
  • 是否有 GitHub 支持的 git 预告片的完整参考列表记录在某处?

    GitHub 支持一些 git 提交 预告片 尽管它没有这样称呼它们 因为instance https docs github com en pull requests committing changes to your project
  • 如何生成要展开的任务

    有人可以解释一下这两种说法之间的区别吗 Task
  • Jenkins 按标签锁定

    我想要实现的目标 I have jobA一台机器上需要 1 个执行器 I have jobB需要同一台机器上的 2 个执行器和 X 台机器上的 1 个执行器 我希望他们能够使用相同的机器 尽管不是同时 gt 他们目前使用不同的机器 他们的所
  • EF Code First 中自引用实体的映射

    在我的数据库中 我有一个表 Category 其中包含 Id CategoryName ParentCategoryId 列 其中 ParentCategoryId 对 Category Id 有约束 我首先使用实体 框架代码 其中实体如下
  • PHP mySQL - 将新记录插入到主键自动增量的表中

    想知道是否有一个速记版本可以将新记录插入到启用了主键的表中 即不必在查询中包含键列 假设键列称为 ID 其他列是 Fname Lname 和 Website query INSERT INTO myTable VALUES Fname Ln
  • Informix for .NET 的连接字符串

    我们正在使用 Informix 数据库 并使用 ODBC 从 NET 成功连接到它 我们使用的连接字符串是 DRIVER IBM INFORMIX ODBC RIVER UID username PWD password DATABASE
  • 如何为apache http客户端中的所有请求设置默认标头?

    例如 默认用户代理可以设置为 client getParams setParameter CoreProtocolPNames USER AGENT someName 但是如何设置 Accept 标头呢 HttpClient 4 3 现在允
  • Seaborn Lineplot 模块对象没有属性“Lineplot”

    使用seaborn的文档代码生成线图会返回AttributeError module 对象没有属性 lineplot 我已经更新了seaborn并重新导入了模块并再次尝试 没有运气 lineplot 退役了吗 还是有其他事情发生 impor
  • c# socket接收字节数组长度

    我正在尝试学习在 C 中使用套接字 但我有疑问 我正在使用如下代码 byte data new byte 64 int length 0 length sock Receive data more code So the byte data
  • 指定的密钥太长;最大密钥长度为 767 字节 - ASPNet Identity MySQL

    我使用 Identity 和 MySQL 创建了一个 MVC 应用程序 我已经创建了实体 但是当我创建用户表时 它失败并出现标题中指定的错误 我四处搜寻 人们都说UserName Name and Email属性太长 我已经厌倦了在这些列上
  • EOT 必须位于队列的开头吗?

    if if echo lt lt
  • Nodejs 和 Express 中的 Multer 图像上传

    几天来我一直在尝试使用 Multer 上传图像 这就是我已经走了多远 我尝试了多种方法 但似乎无法使其发挥作用 我不知道如何使用 Multer 在 createUser 函数中按如下所示的格式上传图像 我的 server js 文件 var