您好,登錄后才能下訂單哦!
小編給大家分享一下如何使用express+multer實現node中的圖片上傳功能,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
具體內容介紹如下所示:
在前端中,我們使用ajax來異步上傳圖片,使用file-input來上傳圖片,使用formdata對象來處理圖片數據,post到服務器中
在node中使用multer中間件來對上傳路由接口進行處理
multer文檔
package.json
html部分
<body> <div class="form-group"> <label>File input:</label> <input type="file" name="file" id="file"> <p id="result"></p> <img id="img" src=""> </div> <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中的圖片上傳功能”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。