认证0级讲师
express
form 加這個:enctype="multipart/form-data"
enctype="multipart/form-data"
input(type="file")
引用
var multiparty = require('connect-multiparty') var multipartMiddleware = multiparty();
路由app.post('/movie/save',multipartMiddleware,Movie.savePoster,Movie.save)
exports.savePoster = function(req, res, next) { var posterData = req.files.uploadPoster var filePath = posterData.path var originalFilename = posterData.originalFilename if (originalFilename) { fs.readFile(filePath, function(err, data) { var timestamp = Date.now() var type = posterData.type.split('/')[1] var poster = timestamp + '.' + type **//将文件保存到特定的目录** var newPath = path.join(__dirname, '../../', '/file/images/' + poster) fs.writeFile(newPath, data, function(err) { // 自定义 req.poster = poster next() }) }) } else { next() } } 最后可以参考:http://www.imooc.com/learn/197中关于上传海报的章节视频,这个是过期的,后面一章有升级的方法
node express 有上傳插件,自動解析,你只要提供個目錄就可以了很簡單
使用formidable來解析上傳文圖片,簡單明了。你在npm上看看這個模組的api就行
express 用 connect-busboy 來處理圖片上傳的 multipart/* data
multipart/*
這裡有範例程式碼demo
建議用formidable,經過我這幾天的實踐,formidable的API設計更為合理,便於更多的自訂操作,最重要的是支援多檔案上傳。 connect-busboy沒有上述的優點,也不支援multipart
app.post('/ava',multipart(),function(req, res){ var filename = req.files.avatar.originalFilename || path.basename(req.files.avatar.path); var targetPath = pathname + '/image_repository/avatar/' + filename; fs.createReadStream(req.files.avatar.path).pipe(fs.createWriteStream(targetPath)); var _url = '/avatar/' + filename; console.log(_url); console.log(targetPath); var _name = req.session.user; //用module方法保存数据 User.update({name:_name},{$set:{avatar:_url}},function(err){ if (err) throw err; }); res.json({ codetype : 200, msg:{url:'http://' + req.headers.host + '/' + filename}, url:_url }); //用entity方法保存数据,效果相同 //User.findOne({name:_name},function(err, doc){ // if (err) throw err; // if (doc){ // doc.set({avatar:targetPath}); // doc.save(); // }else{ // console.log('no user'); // } //}); //res.json({ // codetype : 200, // msg:{url:'http://' + req.headers.host + '/' + filename}, // url:_url //}); //var _img = req.files; // console.log(_img); //res.json(_img); });
圖片從前端用formdata物件傳入,用流來把圖片複製到你想要的資料夾下
express
form 加這個:
enctype="multipart/form-data"
引用
路由
app.post('/movie/save',multipartMiddleware,Movie.savePoster,Movie.save)
node express 有上傳插件,自動解析,你只要提供個目錄就可以了很簡單
使用formidable來解析上傳文圖片,簡單明了。你在npm上看看這個模組的api就行
express 用 connect-busboy 來處理圖片上傳的
multipart/*
data這裡有範例程式碼demo
建議用formidable,經過我這幾天的實踐,formidable的API設計更為合理,便於更多的自訂操作,最重要的是支援多檔案上傳。
connect-busboy沒有上述的優點,也不支援multipart
圖片從前端用formdata物件傳入,用流來把圖片複製到你想要的資料夾下