网址https://github.com/expressjs/multer
Multer 是一个 node.js 中间件,用于处理 multipart/form-data
类型的表单数据,它主要用于上传文件。它是写在 busboy 之上非常高效。
注意: Multer 不会处理任何非 multipart/form-data
类型的表单数据。
步骤:
1.node.js的dos命令里输入
$ npm install --save multer
2.在js文件中引入
var express= require('express');
var multer = require('multer');
var upload = multer({dest:"/upload"});
*Multer 接受一个 options 对象,其中最基本的是 dest
属性,这将告诉 Multer 将上传文件保存在哪。如果你省略 options 对象,这些文件将保存在内存中,永远不会写入磁盘
3.post传送数据
app.post('/profile', upload.single('avatar'), function (req, res, next) { // req.file 是 `avatar` 文件的信息 // req.body 将具有文本域数据,如果存在的话 }) app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) { // req.files 是 `photos` 文件数组的信息 // req.body 将具有文本域数据,如果存在的话 }) var cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }]) app.post('/cool-profile', cpUpload, function (req, res, next) { // req.files 是一个对象 (String -> Array) 键是文件名,值是文件数组 // // 例如: // req.files['avatar'][0] -> File // req.files['gallery'] -> Array // // req.body 将具有文本域数据,如果存在的话 })
4.前台页面js:
$("#fbtn").change(function () {
//获取file对象
//formdata上传----js版ajax
//1.创建
var ajax = new XMLHttpRequest();
ajax.open("POST","/admin/upload/main")
//发送send
var formdata = new FormData();//$("#form")[0]---js-->jq
formdata.append("photo",this.files[0])
ajax.send(formdata);
//响应成功
ajax.onreadystatechange = function () {
if (ajax.readyState == 4) {
/*
字符串==>对象:JSON.parse();
对象==>字符串:JSON.stringify();
*/
var data =JSON.parse(ajax.responseText);
if (data.status) {
var $img = $('<img src="'+data.mdImg+'" style="width:200px;height:200px">')
$(".pic_box").html($img)
$("#lgImg").val(data.lgImg)
$("#mdImg").val(data.mdImg)
}else{
alert(data.msg)
}
}
}
})