nodeJs上传附件
两种方案: 这两种方案传参还是有区别额
在nodeJs中上传附件调用了 multer 的中间件,采用这个中间件来上传
首先是表单(前端部分):
<!DOCTYPE html>
<html>
<head>
<title>nodejs文件上传</title>
<script src="/javascripts/jquery.min.js"></script>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input name="fileUpload" type="file" />
<!--1-->
<img src="" alt="">
<button type="submit">上传</button>
</form>
<script>
(function($){
$('input').on('change', function(event) {
var files = event.target.files,
reader = new FileReader();
if(files && files[0]){
reader.onload = function (ev) {
$('img').attr('src', ev.target.result);
}
reader.readAsDataURL(files[0]);
}
})
}(jQuery))
</script>
</body>
</html>
服务器端:
var express = require('express');
var router = express.Router();
var multer = require('multer');
var fs = require('fs');
const UPLOAD_PATH = './uploads'
var upload = multer({ dest: UPLOAD_PATH })
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
//多文件上传
// router.post('/upload', upload.array('fileUpload'), function (req, res, next) {
// const files = req.files;
// const response = [];
// const result = new Promise((resolve, reject) => {
// files.map((v) => {
// fs.readFile(v.path, function(err, data) {
// fs.writeFile(`${UPLOAD_PATH}/${v.originalname}`, data, function(err, data) {
// const result = {
// file: v,
// }
// if (err) reject(err);
// resolve('成功');
// })
// })
// })
// })
// result.then(r => {
// res.json({
// msg: '上传成功',
// })
// }).catch(err => {
// res.json({ err })
// });
// })
//单个文件上传
router.post('/upload', upload.single('fileUpload'), function (req, res, next) {
const { file } = req;
console.log(req.files);
fs.readFile(file.path, function(err, data) {
fs.writeFile(`${UPLOAD_PATH}/${file.originalname}`, data, function (err) {
if (err) res.json({ err })
res.json({
msg: '上传成功'
});
});
})
})
module.exports = router;
这事表单上传还有一种就是用异步上传(我比较常用的一种)
这种的话需要怼传输的数据进行重新封装 (首先把所得的数据封装为FormData 然后给后台)
let _this = this;
document.getElementById('upload').onchange = function (e) {
let file = e.target.files[0];
var formData = new FormData();
formData.append('fileUpload', file);
_this.axios.post('/user/file-upload', formData).then(function (response) {
if (response.data.state === 200) {
_this.imageUrl = _this.$store.state.imgBaseUrl + response.data.result;
_this.registerFromData.imageUrl = response.data.result;
}
});
}
nodeJs上传附件的更多相关文章
- wordpress多站点环境设置上传附件大小
多站点环境更改上传附件大小: php.ini post_max_size = 8M upload_max_filesize = 10M 另外,后台域名管理中设置/网络设置/可以设置上传文件大小. 代码 ...
- jquery 通过ajax FormData 对象上传附件
之前上传附件都是用插件,或者用form表单体检(这个是很久以前的方式了),今天突发奇想,自己来实现附件上传,具体实现如下 html: <div> 流程图: <input id=& ...
- Discuz! X论坛上传附件到100%自动取消上传的原因及解决方案
最近接到一些站长的反馈,说论坛上传附件,到100%的时候自己取消上传了.经查是附件索引表pre_forum_attachment表的aid字段自增值出现了问题,导致程序逻辑返回的aid值实际为一个My ...
- Discuz模拟批量上传附件发帖
简介 对于很多用discuz做资源下载站来说,一个个上传附件,发帖是很繁琐的过程.如果需要批量上传附件发帖,就需要去模拟discuz 上传附件的流程. 模拟上传 discuz 附件逻辑 dz附件储存在 ...
- 修改WordPress中上传附件2M大小限制的方法/php+iis上传附件默认大小修改方法
在服务器上架设好WordPress后,使用过程中发现,上传附件大小有2M的限制 话说服务器就是本机,可以直接把文件拖到附件存储文件夹下,然后在需要附件的地方引用链接 可是这种落后的方法终究不是办法,还 ...
- Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件
上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传.显示及下载.包括以下几个步骤: 附件上传的web页面 附件显示及下载的附件实体 调用上传web页面的JS文件 实体上 ...
- 怎样解决asp.net.mvc上传附件超过长度问题?
最近,在做一个上传附件功能,但是文件超过4M,就报上传的文件超过长度问题
- JQuery Uplodify上传附件(同一个页面多个uplodify控件解决方案)
功能描述:实现同一页面中多个不同附件的上传保存,且做到最大程度的减少代码修改量(最大程度的公用),为了方便实现垃圾数据和垃圾文件的处理,项目采用临时文件夹的方式:即:文件自动上传先保存到临时文件夹下, ...
- crm 4 注释与上传附件权限
文档注释权限及上传附件是与实体的”追加到”权限有关. 文档注释权限及上传附件是与核心记录中”注释”的”追加”权限有关. 追加及追加到的权限,我的理解是与本实体有关联的实体的权限,比如你引用了其它表的字 ...
随机推荐
- 概率和期望dp
概率和期望dp 概率和期望好神啊,完全不会. 网上说概率要顺着推,期望要逆着推,然而我目前做的概率期望题正好都与此相反2333 概率: 关于概率:他非常健康 初中概率题非常恐怖.现在来思考一道题: ...
- Linux命令——用户和用户组管理
Linux命令--用户和用户组管理 命令groupadd 作用:新增组 格式:groupadd [-g GID] groupname 参数:-g,指定GID,一般从500开始 说明:一般不必加-g参数 ...
- RC Calculation
scenario 定义中包括 Mode.Corner.RC 其中 Corner (PVT)用于计算 cell delay 而 RC 用于计算 net delay 本文简要介绍如何使用 RC 参数来计算 ...
- ssh访问服务器端visdom
在服务器端启动visdompython -m visdom.server在windows端,将服务器的8097端口重定向到windows端(做了映射绑定):ssh -L 8097:127.0.0.1: ...
- 利用WebHook实现PHP自动部署Git代码
平时项目代码都托管在Coding,然后每次提交了代码之后都要SSH到服务器上去git pull一次,很是繁琐,在看了OverTrue的<使用PHP脚本远程部署git项目>后就尝试在自己服务 ...
- 虚拟机和主机ping不通解决的方法
虚拟机和主机ping不通 一般有3种方式:NAT.bridged .host-Only. Bridged方式: 在图1中Network connection中选中第1项,即在vm ware虚拟机属性里 ...
- VS中为非控制台程序提供控制台输出窗口
/************************************************************************/ /* 模块名:ConsoleAdapter 文件名 ...
- Linux常用rmp包网址
* HA:http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/ * Openstack:https://r ...
- how2j 的shiro教程初探
教程案例里的mysql连接器只支持mysql,不支持mariadb,如果用的不是mysql,创建连接时会报错.
- stl源码剖析 详细学习笔记 仿函数
//---------------------------15/04/01---------------------------- //仿函数是为了算法而诞生的,可以作为算法的一个参数,来自定义各种操 ...