vue上传图片

/**

 * 上传图片 post请求 upload

 * 说明:

 *  1.后台安装 multer 模块   同时引入fs模块

 *  2.router.js入口文件导入模块

 *      const fs=require('fs')

        const multer=require('multer')

 *  3.上传图片

 *

 */

目录

element plus组件

 1.后台安装 multer 模块   同时引入fs模块

 *  2.router.js入口文件导入模块(服务器端server)

组件代码和js部分

数据库入口(部分代码)

 *  3.上传图片


element plus组件

在element plus中找到合适的上传组件,拿来使用。注意别忘了导入组件(import)(components:{}),命名相应变量(data)和方法的使用(methods:{}),在服务器端建立空的文件夹当作上传图片的仓库(upload)。详细过程省略

 1.后台安装 multer 模块   同时引入fs模块
cnpm i multer -s
 *  2.router.js入口文件导入模块(服务器端server)
const fs=require('fs')

const multer=require('multer')

在后台搭建的文件下调用post请求

//post 请求表单数据
app.use(express.urlencoded({ extended: true }))

 进行接口的路径配置

不需要将方法写道index.js文件下,因为从element plus拿的组件提供了方法action

:action="url"//动态地址

但是需要在现在的组件中导入base文件

修改elm组件相应属性

组件代码和js部分
<template>
     <!-- 
      ref="upload" 获取dom元素 --upload  
      action=''    必选参数,上传的地址	string
      :on-preview="handlePreview" 点击文件列表中已上传的文件时的钩子 function(file)
      on-remove	    文件列表移除文件时的钩子	function(file, fileList)
      on-success	文件上传成功时的钩子	function(response, file, fileList)
      on-error	    文件上传失败时的钩子	function(err, file, fileList)
      on-progress	文件上传时的钩子	function(event, file, fileList)
      auto-upload	是否在选取文件后立即进行上传
      file-list	    上传的文件列表, 例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}]	array

 -->
  <el-upload
    ref="uploadRef"
    class="upload-demo"
    :action="url"
    :on-success="successUpload"
    :auto-upload="false"
  >
    <template #trigger>
      <el-button type="primary">选取文件</el-button>
    </template>

    <el-button class="ml-3" type="success" @click="submitUpload">
      上传到服务器
    </el-button>

  </el-upload>
</template>

<script>
import base from "../../api/base";
    export default {
    data() {
      return {
        url:base.uploadUrl,//图片地址服务器
        fileList: []
      };
    },
    methods: {
        //点击上传按钮--submit()	手动上传文件列表
      submitUpload() {
        this.$refs.uploadRef.submit();
      },
      //上传成功函数
      successUpload(response,file,fileList){
        console.log("上传成功",response,file,fileList);
      },
      handleRemove(file, fileList) {
        console.log(file, fileList);
      },
      handlePreview(file) {
        console.log(file);
      }
    }
  }
</script>

<style lang="scss" scoped>

</style>
数据库入口(部分代码)
const express = require("express")
const router = express.Router()
//导入数据库sqlFn("sql",[],res=>{})
const sqlFn = require("./mysql")
//图片所需要的模块
const fs=require('fs')
const multer=require('multer')
 
var storage = multer.diskStorage({
            destination: function (req, file, cb) {
                cb(null, "./upload/")
            },
            filename: function (req, file, cb) {
                cb(null, Date.now() + "-" + file.originalname)
            }
        })
        
        var createFolder = function (folder) {
            try {
                fs.accessSync(folder);
            } catch (e) {
                fs.mkdirSync(folder);
            }
        }
        
        var uploadFolder = './upload/';
        createFolder(uploadFolder);
        var upload = multer({
            storage: storage
        });
        
        router.post('/upload', upload.single('file'), function (req, res, next) {
            var file = req.file;
            console.log('文件类型:%s', file.mimetype);
            console.log('原始文件名:%s', file.originalname);
            console.log('文件大小:%s', file.size);
            console.log('文件保存路径:%s', file.path);
            res.json({
                res_code: '0',
                name: file.originalname,
                url: file.path
            });
        });
 *  3.上传图片

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值