最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用express+multer實(shí)現(xiàn)node中的圖片上傳功能

 更新時(shí)間:2018年02月02日 09:27:22   作者:Or_so  
這篇文章主要介紹了使用express+multer實(shí)現(xiàn)node中的圖片上傳功能,需要的朋友可以參考下

下文給大家介紹使用express+multer實(shí)現(xiàn)node中的圖片上傳功能,具體內(nèi)容介紹如下所示:

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

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

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>
    //上傳圖片的業(yè)務(wù)邏輯函數(shù)
    function uploadFile(){
      //上傳圖片的input
      var file = document.getElementById("file")
      //因?yàn)闇?zhǔn)備用post提交,又因?yàn)閳D片的內(nèi)容比較大,所以我們選擇使用formdata來承載數(shù)據(jù)
      //創(chuàng)建formdata對象
      var formData = new FormData();
      //給formdata對象中放入數(shù)據(jù)(鍵值對的方式)
      formData.append('file',file.files[0]);
      //提交請求
      $.ajax({
        url: '/upload',//請求路徑
        type: 'POST',
        data: formData,
        contentType: false,//為了讓瀏覽器根據(jù)傳入的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("與服務(wù)器通信發(fā)生錯(cuò)誤");
        }
      });
      console.log(1)
    }
    //給按鈕添加點(diǎn)擊事件
    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數(shù)據(jù)格式(主要用在上傳功能中)的中間件
//文檔:https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md
const multer = require('multer')
const app = express()
//配置express的靜態(tài)目錄
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)
  //確定圖片存儲時(shí)的名字,注意,如果使用原名,可能會造成再次上傳同一張圖片的時(shí)候的沖突
  filename: function (req, file, cb){
    cb(null, Date.now()+file.originalname)
  }
});
//生成的專門處理上傳的一個(gè)工具,可以傳入storage、limits等配置
var upload = multer({storage: storage});
//接收上傳圖片請求的接口
app.post('/upload', upload.single('file'), function (req, res, next) {
  //圖片已經(jīng)被放入到服務(wù)器里,且req也已經(jīng)被upload中間件給處理好了(加上了file等信息)
  //線上的也就是服務(wù)器中的圖片的絕對地址
  var url = '/uploadImgs/' + req.file.filename
  res.json({
    code : 200,
    data : url
  })
});
http.createServer(app).listen(3000,()=>{
  console.log('server is listening')
})

自我感覺良好,不知道博客園為什么要給我移除首頁....

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

總結(jié)

以上所述是小編給大家介紹的使用express+multer實(shí)現(xiàn)node中的圖片上傳功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Node的stream數(shù)據(jù)流你了解嗎

    Node的stream數(shù)據(jù)流你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Node的stream數(shù)據(jù)流,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 利用adb shell和node.js實(shí)現(xiàn)抖音搶紅包功能(推薦)

    利用adb shell和node.js實(shí)現(xiàn)抖音搶紅包功能(推薦)

    這篇文章主要介紹了利用adb shell和node.js實(shí)現(xiàn)抖音搶紅包功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 前端如何更好的展示后端返回的十萬條數(shù)據(jù)

    前端如何更好的展示后端返回的十萬條數(shù)據(jù)

    這篇文章主要為大家介紹了前端如何更好的展示后端返回的十萬條數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11
  • Node.js本地文件操作之文件拷貝與目錄遍歷的方法

    Node.js本地文件操作之文件拷貝與目錄遍歷的方法

    這篇文章主要介紹了Node.js本地文件操作之文件拷貝與目錄遍歷的方法,拷貝用到了Node的文件API,遍歷則舉了一個(gè)異步API實(shí)現(xiàn)的形式(Node的一大特點(diǎn)),需要的朋友可以參考下
    2016-02-02
  • 淺談在node.js進(jìn)入文件目錄的問題

    淺談在node.js進(jìn)入文件目錄的問題

    今天小編就為大家分享一篇淺談在node.js進(jìn)入文件目錄的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • node-sass常見報(bào)錯(cuò)的問題及解決方法

    node-sass常見報(bào)錯(cuò)的問題及解決方法

    在安裝node-sass時(shí),經(jīng)常會遇到下載慢、版本不匹配或python錯(cuò)誤等問題,使用淘寶鏡像加速下載、通過nvm管理node版本或指定node-sass版本號安裝,都能有效解決這些問題,若遇到python相關(guān)錯(cuò)誤,檢查node版本是否合適通??梢越鉀Q,感興趣的朋友一起看看本文吧
    2024-09-09
  • 解決npm?run?serve啟動報(bào)錯(cuò)npm?ERR?Missing?script:"serve"

    解決npm?run?serve啟動報(bào)錯(cuò)npm?ERR?Missing?script:"serve&q

    這篇文章主要給大家介紹了關(guān)于解決npm?run?serve啟動報(bào)錯(cuò)npm?ERR?Missing?script:"serve"的相關(guān)資料,這是最近開發(fā)中遇到的一個(gè)問題,文中通過圖文將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Node.js中使用Buffer編碼、解碼二進(jìn)制數(shù)據(jù)詳解

    Node.js中使用Buffer編碼、解碼二進(jìn)制數(shù)據(jù)詳解

    這篇文章主要介紹了Node.js中使用Buffer編碼、解碼二進(jìn)制數(shù)據(jù)詳解,Buffer支持ascii、utf8、ucs2、base64等編碼格式,需要的朋友可以參考下
    2014-08-08
  • Node.js+Express+Mysql 實(shí)現(xiàn)增刪改查

    Node.js+Express+Mysql 實(shí)現(xiàn)增刪改查

    這篇文章主要介紹了Node.js+Express+Mysql 實(shí)現(xiàn)增刪改查,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解Node.js包的工程目錄與NPM包管理器的使用

    詳解Node.js包的工程目錄與NPM包管理器的使用

    這篇文章主要介紹了Node.js包的工程目錄與NPM包管理器的使用,可以幫助編程者更好地組織Node.js代碼文件,需要的朋友可以參考下
    2016-02-02

最新評論

泰兴市| 余江县| 自治县| 梧州市| 溆浦县| 呼和浩特市| 曲松县| 三原县| 阿巴嘎旗| 蒲城县| 乐平市| 辉南县| 西平县| 霞浦县| 区。| 台东县| 玛曲县| 长丰县| 郧西县| 民乐县| 沛县| 五大连池市| 安平县| 淮北市| 东安县| 嵩明县| 汉中市| 普洱| 冕宁县| 博兴县| 武邑县| 青海省| 上虞市| 永康市| 临西县| 通山县| 梓潼县| 金寨县| 保山市| 平顶山市| 泗洪县|