Element-ui 中的上传组件,隐藏的上传文件框

首先我们可以从Element文档上搜索相关的上传组件。在其基础上做些修改。

<el-upload
   :class="fileUrl.length == 1 ? 'hide':''"
   action="#" 
   list-type="picture-card"
   :on-change="uploadSuccess"
   :auto-upload="false"
   :show-file-list="true"
   :limit="fileLimit"
   :file-list="fileUrl">

    <i slot="default" class="el-icon-plus"></i>
    <div slot="file" slot-scope="{file}">
      <img
        class="el-upload-list__item-thumbnail"
        :src="file.url" alt=""
      >
      <span class="el-upload-list__item-actions">
        <span
          class="el-upload-list__item-preview"
          @click="handlePictureCardPreview(file)"
        >
          <i class="el-icon-zoom-in"></i>
        </span>
        <span
          v-if="!disabled"
          class="el-upload-list__item-delete"
          @click="handleRemove(file)"
        >
          <i class="el-icon-delete"></i>
        </span>
      </span>
    </div>
</el-upload>

其中参数说明需要参考El文档:https://element.eleme.cn/2.15/#/zh-CN/component/dialog

class自定义属性样式:主要是控制el-upload组件中隐藏的上传文件框。

css样式:
.hide .el-upload--picture-card {
  display: none !important;
}

如果说上面的样式不生效,有两种做法:1、删除style标签上的 scoped 属性。2、样式穿透的方法: ::v-deep

例如:
<style lang="scss" scoped>
::v-deep .hide .el-upload--picture-card {
  display: none !important;
}
</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 安装element-ui和axios ``` npm install element-ui axios ``` 2. 在main.js引入element-ui和axios ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import axios from 'axios' Vue.use(ElementUI) Vue.prototype.$axios = axios ``` 3. 在组件使用el-upload组件 ```html <template> <div> <el-upload class="upload-demo" action="/api/upload" :on-success="handleSuccess" :before-upload="beforeUpload" :headers="{Authorization: token}"> <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> </div> </template> ``` 其,action是上传的接口地址,on-success是上传成功后的回调函数,before-upload是上传前的钩子函数,headers是请求头部,可以传递token等信息。 4. 在methods定义handleSuccess和beforeUpload函数 ```javascript methods: { handleSuccess(response, file, fileList) { console.log(response) // 在这里处理上传成功后的响应数据 }, beforeUpload(file) { const isJPG = file.type === 'image/jpeg' || file.type === 'image/png' const isLt500K = file.size / 1024 < 500 if (!isJPG) { this.$message.error('上传图片只能是 JPG/PNG 格式!') } if (!isLt500K) { this.$message.error('上传图片大小不能超过 500KB!') } return isJPG && isLt500K } } ``` 在beforeUpload函数,可以对上传的图片进行格式、大小等限制。 5. 在后端接口处理上传的图片 在后端接口,可以使用express架的multer间件来处理上传的图片。安装multer: ``` npm install multer ``` 在express引入multer,并设置上传的文件夹: ```javascript const express = require('express') const multer = require('multer') const app = express() const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now() + '.jpg') } }) const upload = multer({ storage: storage }) app.post('/api/upload', upload.single('file'), (req, res) => { console.log(req.file) // 在这里处理上传成功后的响应数据 }) ``` 在这里,上传的文件会被保存到uploads文件夹下,文件名会以字段名和时间戳命名。 注意:在使用express间件处理上传文件时,需要使用body-parser间件。安装body-parser: ``` npm install body-parser ``` 在express引入body-parser: ```javascript const bodyParser = require('body-parser') app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()) ``` 完整代码如下: ```javascript const express = require('express') const multer = require('multer') const bodyParser = require('body-parser') const app = express() const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now() + '.jpg') } }) const upload = multer({ storage: storage }) app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()) app.post('/api/upload', upload.single('file'), (req, res) => { console.log(req.file) // 在这里处理上传成功后的响应数据 }) app.listen(3000, () => console.log('Server is running...')) ``` 注意:在使用element-ui上传组件时,需要设置上传的文件类型和大小限制,但是这只是客户端的限制,如果后端没有做相应的处理,仍然可以上传非指定类型和大小的文件,因此,在后端接口也需要对上传的文件进行相应的限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值