最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

express、multer实现node中图片上传功能

来源:懂视网 责编:小采 时间:2020-11-27 20:04:06
文档

express、multer实现node中图片上传功能

express、multer实现node中图片上传功能:在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中,在node中使用multer中间件来对上传路由接口进行处理。本文主要和大家介绍使用express+multer实现node中的图片上传功能,需要的朋
推荐度:
导读express、multer实现node中图片上传功能:在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中,在node中使用multer中间件来对上传路由接口进行处理。本文主要和大家介绍使用express+multer实现node中的图片上传功能,需要的朋
在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中,在node中使用multer中间件来对上传路由接口进行处理。本文主要和大家介绍使用express+multer实现node中的图片上传功能,需要的朋友可以参考下,希望能帮助到大家。

multer文档

package.json

html部分

<body>
<p class="form-group">
 <label>File input:</label>
 <input type="file" name="file" id="file">
 <p id="result"></p>
 <img id="img" src="">
 </p>
 <button id="upload" class="btn btn-default">提交</button>
 </body>

js部分

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
 <script>
 //上传图片的业务逻辑函数
 function uploadFile(){
 //上传图片的input
 var file = document.getElementById("file")
 //因为准备用post提交,又因为图片的内容比较大,所以我们选择使用formdata来承载数据
 //创建formdata对象
 var formData = new FormData();
 //给formdata对象中放入数据(键值对的方式)
 formData.append('file',file.files[0]);
 //提交请求
 $.ajax({
 url: '/upload',//请求路径
 type: 'POST',
 data: formData,
 contentType: false,//为了让浏览器根据传入的formdata来判断contentType
 processData: false,//同上
 success: function(data){
 if(200 === data.code) {
 $('#result').html("上传成功!");
 $('#img').attr('src',data.data);
 } else {
 $('#result').html("上传失败!");
 }
 console.log(2)
 },
 error: function(){
 $("#result").html("与服务器通信发生错误");
 }
 });
 console.log(1)
 }
 //给按钮添加点击事件
 function postPage() {
 //上传按钮
 var uploada = document.getElementById('upload');
 uploada.addEventListener("click",function () {
 uploadFile();
 },false);
 }
 window.onload = function () {
 postPage();
 }
</script>

NodeJS逻辑代码

const http = require('http')
const path = require('path')
const express = require('express')
//是nodejs中处理multipart/form-data数据格式(主要用在上传功能中)的中间件
//文档:https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md
const multer = require('multer')
const app = express()
//配置express的静态目录
app.use(express.static(path.join(__dirname, 'public')));
app.get('/',(req,res)=>{
 res.sendFile(__dirname+'/index.html')
})
//配置diskStorage来控制文件存储的位置以及文件名字等
var storage = multer.diskStorage({
 //确定图片存储的位置
 destination: function (req, file, cb){
 cb(null, './public/uploadImgs')
 },
![](http://images2017.cnblogs.com/blog/1283058/201802/1283058-20180201154342296-515041615.png)
 //确定图片存储时的名字,注意,如果使用原名,可能会造成再次上传同一张图片的时候的冲突
 filename: function (req, file, cb){
 cb(null, Date.now()+file.originalname)
 }
});
//生成的专门处理上传的一个工具,可以传入storage、limits等配置
var upload = multer({storage: storage});
//接收上传图片请求的接口
app.post('/upload', upload.single('file'), function (req, res, next) {
 //图片已经被放入到服务器里,且req也已经被upload中间件给处理好了(加上了file等信息)
 //线上的也就是服务器中的图片的绝对地址
 var url = '/uploadImgs/' + req.file.filename
 res.json({
 code : 200,
 data : url
 })
});
http.createServer(app).listen(3000,()=>{
 console.log('server is listening')
})

自我感觉良好,不知道博客园为什么要给我移除首页....

再发一次,if(delete){
alert('Never publish anything again.')
}else{
alert(1)
}

文档

express、multer实现node中图片上传功能

express、multer实现node中图片上传功能:在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中,在node中使用multer中间件来对上传路由接口进行处理。本文主要和大家介绍使用express+multer实现node中的图片上传功能,需要的朋
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top