91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用express+multer實現node中的圖片上傳功能

發布時間:2021-07-09 14:46:12 來源:億速云 閱讀:179 作者:小新 欄目:web開發

小編給大家分享一下如何使用express+multer實現node中的圖片上傳功能,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

具體內容介紹如下所示:

在前端中,我們使用ajax來異步上傳圖片,使用file-input來上傳圖片,使用formdata對象來處理圖片數據,post到服務器

在node中使用multer中間件來對上傳路由接口進行處理

multer文檔

package.json

如何使用express+multer實現node中的圖片上傳功能

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中的圖片上傳功能”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

资阳市| 康定县| 布尔津县| 伊川县| 嘉禾县| 连州市| 洛扎县| 资源县| 额尔古纳市| 天峻县| 蒲城县| 霞浦县| 宝清县| 正宁县| 柳河县| 西昌市| 郓城县| 蕲春县| 时尚| 合肥市| 正阳县| 元氏县| 四子王旗| 东台市| 中方县| 英德市| 阜南县| 吕梁市| 苗栗县| 揭阳市| 嘉禾县| 兰考县| 化隆| 武宣县| 余江县| 孙吴县| 杭锦后旗| 拜城县| 湘乡市| 峨边| 龙江县|