使用node實現(xiàn)保存圖片的功能

前端部分

<template>
  <div class="main">
    <el-upload
      class="avatar-uploader"
      action="http://localhost:8888/uploadImg"
      :show-file-list="false"
      :http-request="upload"
    >
      <img v-if="imageUrl" :src="imageUrl" class="avatar" />
      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
    </el-upload>
  </div>
</template>

<script>
export default {
  data() {
    return {
      imageUrl: ""
    };
  },
  methods: {
    upload(f) {
      console.log(f);
      let formData = new FormData();
      formData.append("file", f.file);

      this.$axios({
        method: "post",
        url: "http://localhost:8888/uploadImg",
        data: formData
      }).then(res => {
        //上傳成功之后 顯示圖片
        this.imageUrl = res.data.fileSqlUrl ;
      });
    }
  }
};
</script>

<style></style>


node

const express = require("express");
const bodyParser = require("body-parser");
const app = express(); //返回一個服務(wù)
var mysql = require("mysql");
const path = require("path");
const path = require("path");
const multer = require("multer"); 
 // 以上需要 npm install 下載一下
var connection = mysql.createConnection({
  host: "120.77.********",
  user: "sqlroot",
  password: "*******",
  port: 3306,
  database: "sqlroot",
  useConnectionPooling: true,
}); 
connection.connect(function (err) {
  if (err) {
    console.log("error");
  }
  console.log("connect success!");
});
// 建立數(shù)據(jù)庫連接
var fileSqlUrl = "http://localhost:8888/upLoad/";
var fileSqlName;
var storage = multer.diskStorage({
  //設(shè)置 上傳圖片服務(wù)器位置
  destination: path.resolve(__dirname, "./upload"),
  //設(shè)置 上傳文件保存的文件名
  filename: function (req, file, cb) {
    // 獲取后綴擴展
    let extName = file.originalname.slice(file.originalname.lastIndexOf(".")); //.jpg
    // 獲取名稱
    let fileName = Date.now();
    fileSqlName = fileName + extName;
    fileSqlUrl += fileSqlName;
    // console.log(fileName + extName); //12423543465.jpg
    cb(null, fileName + extName);
  },
});
var fileFilter = function (req, file, cb) {
  var acceptableMime = ["image/jpeg", "image/png", "image/jpg", "image/gif"];
  // 限制類型
  // null是固定寫法
  if (acceptableMime.indexOf(file.mimetype) !== -1) {
    cb(null, true); // 通過上傳
  } else {
    cb(null, false); // 禁止上傳
  }
};
var limits = {
  fileSize: "10MB", //設(shè)置限制(可選)
};

const imageUploader = multer({
  fileFilter,
  storage,
  limits,
}).single("file"); //文件上傳預(yù)定 name 或者 字段

// 圖片
app.post("/uploadImg", imageUploader, (req, res) => {
  console.log(imageUploader);
  connection.query(
    `insert into img values(0,'${fileSqlUrl}','${fileSqlName}')`,
    (err, data) => {
      if (err) {
        res.send({ err: 1, msg: "增加數(shù)據(jù)失敗", success: false });
        res.end();
      } else {
        res.send({ err: 0, msg: "添加成功", success: true, fileSqlUrl });
        res.end();
      }
    }
  );
});
app.use(express.static(__dirname + "/public"));

app.listen(8888, () => {
  console.log("服務(wù)已經(jīng)啟動");
});

這樣圖片就保存在了upload的文件夾里面了

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容