成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

node之本地服務器圖片上傳

LoftySoul / 3418人閱讀

摘要:在自己做一個簡單的后臺管理系統(tǒng)時,用的是作本地數(shù)據(jù)庫,然后用了的組件來實現(xiàn)圖片的上傳,中間有遇到那么點小坑,這里記錄下,比較坑的一點就是,不知道文件的命名不能帶空格,然后改了好久文件這里的話,就是簡單點的使用圖形界面框架的上傳組件,然后

在自己做一個簡單的后臺管理系統(tǒng)時,用的是node作本地數(shù)據(jù)庫,然后用了Element-ui的upload組件來實現(xiàn)圖片的上傳,中間有遇到那么點小坑,這里記錄下,比較坑的一點就是,不知道文件的命名不能帶空格,然后改了好久
1.index.vue文件

這里的話,就是簡單點的使用圖形界面框架Element-ui的上傳組件,然后,action就是服務器端的地址,我這里使用了代理,將localhost:8080代理到你使用node作為服務器的地址就可以了


2.代理文件

我這里使用的是vue-cli3腳手架來搭建的項目,所以,自己在項目的根目錄下創(chuàng)建一個vue.config.js來做一些配置

module.exports = {
  devServer: {
    port: 8080,
    headers: {
    },
    inline: true,
    overlay: true,
    stats: "errors-only",
    proxy: {
      "/api": {
        target: "http://127.0.0.1:3000",
        changeOrigin: true // 是否跨域
      }
    }
  },
};
3.node服務器端文件
這里很重要的一點就是設置靜態(tài)資源目錄
app.use("/serverImage", express.static(path.join(__dirname, "serverImage")));

對圖片上傳進行了方法的封裝

const fs = require("fs");
const path = require("path");
/* formidable用于解析表單數(shù)據(jù),特別是文件上傳 */
const formidable = require("formidable");
/* 用于時間格式化 */
const formatTime = require("silly-datetime");

/* 圖片上傳 */
module.exports = (req, res) => {
  /* 創(chuàng)建上傳表單 */
  let form = new formidable.IncomingForm();
  /* 設置編碼格式 */
  form.encoding = "utf-8";
  /* 設置上傳目錄(這個目錄必須先創(chuàng)建好) */
  form.uploadDir = path.join(__dirname, "../serverImage");
  /* 保留文件后綴名 */
  form.keepExtensions = true;
  /* 設置文件大小 */
  form.maxFieldsSize = 2 * 1024 *1024;

  /* 格式化form數(shù)據(jù) */
  form.parse(req, (err, fields, files) => {
    let file = files.file;
    /* 如果出錯,則攔截 */
    if(err) {
      return res.send({"status": 500, msg: "服務器內(nèi)部錯誤", result: ""});
    }

    if(file.size > form.maxFieldsSize) {
      fs.unlink(file.path);
      return res.send({"status": -1, "msg": "圖片不能超過2M", result: ""});
    }

    /* 存儲后綴名 */
    let extName = "";

    switch (file.type) {
      case "image/png":
        extName = "png";
        break;
      case "image/x-png":
        extName = "png";
        break;
      case "image/jpg":
        extName = "jpg";
        break;
      case "image/jpeg":
        extName = "jpg";
        break;
    }
    if(extName.length == 0) {
      return res.send({"status": -1, "msg": "只支持jpg和png格式圖片", result: ""});
    }

    /* 拼接新的文件名 */
    let time = formatTime.format(new Date(), "YYYYMMDDHHmmss");
    let num = Math.floor(Math.random() * 8999 + 10000);
    let imageName = `${time}_${num}.${extName}`;
    let newPath = form.uploadDir + "/" + imageName;

    /* 更改名字和路徑 */
    fs.rename(file.path, newPath, (err) => {
      if(err) {
        return res.send({"status": -1, "msg": "圖片上傳失敗", result: ""});
      } else {
        return res.send({"status": 200, "msg": "圖片上傳成功", result: {url: `http://localhost:3000/serverImage/${imageName}`}});
      }
    })
  })
};

方法的調(diào)用

const express = require("express");
const router = express.Router();
const uploadImg = require("./uploadImg");

/* 上傳圖片 */
router.post("/upload", (req, res) => {
  uploadImg(req, res);
});

module.exports = router;

服務器端入口文件

const express = require("express");
const app = express();
const path = require("path");
/* body-parser是一個HTTP請求體解析的中間件
 * 使用這個模塊可以解析JSON、Raw、文本、URL-encoded格式的請求體
 * */
const bodyParser = require("body-parser");

const dataBaseOperate = require("./database/operate");

/* 以application/json格式解析數(shù)據(jù) */
app.use(bodyParser.json());
/* 以application/x-www-form-urlencoded格式解析數(shù)據(jù) */
app.use(bodyParser.urlencoded({ extended: false }));

/* 設置靜態(tài)資源目錄 */
app.use("/serverImage", express.static(path.join(__dirname, "serverImage")));

app.use("/api", dataBaseOperate);


app.listen(3000, () => {
  console.log("server is listening to http://localhost:3000")
});
4.小結(jié)下

對于接口文件的返回,這里使用了body-parser這個中間件來對node返回的body進行json格式的解析

很重要的一點就是設置靜態(tài)資源目錄,不然的話就會報錯,找不到文件或者文件夾

設置靜態(tài)資源目錄,用于存儲服務器端的靜態(tài)資源文件
app.use("/serverImage", express.static(path.join(__dirname, "serverImage")));

然后就是對文件的命名不能出現(xiàn)空格

文件的鏈接可以使用本地服務器端的url地址

正在努力學習中,若對你的學習有幫助,留下你的印記唄(點個贊咯^_^)

往期好文推薦:

判斷ios和Android及PC端

webpack打包(有面試題)

純css實現(xiàn)瀑布流(multi-column多列及flex布局)

實現(xiàn)單行及多行文字超出后加省略號

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/102982.html

相關文章

  • Express系列multer

    摘要:目前覺得對我有用的是和。后者可以在本地調(diào)試頁面,對于手機頁面尤其有用。這次主要說一下,我并沒有實現(xiàn)所有的功能,只是實現(xiàn)單圖片上傳這一個功能,其他的再摸索嘍。目前就這樣,下次弄出來了多圖片上傳我再接著更新。 這兩天在看《nodejs權威指南》,這本書看了好久了,但是讀的一直不細,這次才好好看了一遍。 收獲還是蠻多的,主要在于wenpack使用的一些細節(jié)問題,有點茅塞頓悟的體驗吧,另外在n...

    Null 評論0 收藏0
  • php圖片處理本地圖片轉(zhuǎn)base64格式上傳

    摘要:文章首發(fā)于藍鍋鍋博客主要是用到的接口,既然是的,所支持的瀏覽器我就不多說啦,老生常談的問題了,遠離,珍惜生命。目錄路徑為目錄路徑為文章首發(fā)于藍鍋鍋博客,歡迎交流,共同進步。 我們在開發(fā)系統(tǒng)時,處理圖片上傳是不可避免的,例如使用thinkphp的肯定很熟悉import(@.ORG.UploadFile);的上傳方式,今天我們來講一個使用html5 base64上傳圖片的方法。文章首發(fā)于藍...

    levy9527 評論0 收藏0
  • php圖片處理本地圖片轉(zhuǎn)base64格式上傳

    摘要:文章首發(fā)于藍鍋鍋博客主要是用到的接口,既然是的,所支持的瀏覽器我就不多說啦,老生常談的問題了,遠離,珍惜生命。目錄路徑為目錄路徑為文章首發(fā)于藍鍋鍋博客,歡迎交流,共同進步。 我們在開發(fā)系統(tǒng)時,處理圖片上傳是不可避免的,例如使用thinkphp的肯定很熟悉import(@.ORG.UploadFile);的上傳方式,今天我們來講一個使用html5 base64上傳圖片的方法。文章首發(fā)于藍...

    isaced 評論0 收藏0
  • 基于node開發(fā)的多用戶博客系統(tǒng)

    摘要:多用戶博客系統(tǒng)該多用戶博客系統(tǒng),是在之前一開始學習的使用的時候,大佬說讓去做一個系統(tǒng)性的項目,這樣前后端兼顧,從里面去系統(tǒng)性的總結(jié)東西,索性就做了一個這個,項目的架子是根據(jù)一個開源項目的指導進行入坑的,陸陸續(xù)續(xù)用了四個月時間,由于是剛步入大 多用戶博客系統(tǒng) 該多用戶博客系統(tǒng),是在之前一開始學習node的使用的時候,大佬說讓去做一個系統(tǒng)性的項目,這樣前后端兼顧,從里面去系統(tǒng)性的總結(jié)東西...

    Olivia 評論0 收藏0

發(fā)表評論

0條評論

LoftySoul

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<