VUE 使用 elementUI 实现文件上传

VUE 使用 elementUI 实现文件上传

废话少说直接上代码

1、文件上传接口只要求file二进制文件,无需其他参数
// 这里是element 中的上传示例代码
<el-upload
  class="upload-demo"
  action="https://jsonplaceholder.typicode.com/posts/"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :on-change="onChange"
  :before-remove="beforeRemove"
  multiple
  :limit="3"
  :on-exceed="handleExceed"
  :file-list="fileList">
  <el-button size="small" type="primary">点击上传</el-button>
  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>

如果你上传文件不需要传参的话,可以直接将上传路径写到action中

action=“https://jsonplaceholder.typicode.com/posts/

2、文件上传需要file文件和其他参数
1、element 提供了 data 属性 【上传时附带的额外参数】

今天我们用另一个比较通用的方法

1、可以将 action=“#” 改成这样,取消默认上传路径。
2、通过 on-change 事件,监听添加文件事件。
3、获取 file 二进制文件。
有些事件和参数可以根据需求添加
<el-upload
  class="upload-demo"
  action="#"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :on-change="onChange" > 
</el-upload>
// 可以根据后台接口要求来决定参数的类型
    onChange(file) {
    //通常文件上传是要用 FormData 格式的
      this.formdata = new FormData()
      this.formdata.append('file', file.raw)
      this.formdata.append('name', this.name)
    },
// this.formdata 就是要传给后台的参数了

结束

好的,我会为您解答。 首先,您需要在 Vue.js 中引入 Element-UI 组件库。可以使用以下命令进行安装: ``` npm i element-ui -S ``` 然后在 main.js 中引入 Element-UI 的 CSS 和 JS 文件: ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 接下来,在组件中使用 el-upload 组件来实现文件上传。以下是一个示例: ```vue <template> <el-upload class="upload-demo" action="/your-upload-api" :on-success="handleUploadSuccess" :before-upload="beforeUpload" :auto-upload="false" :file-list="fileList"> <el-button slot="trigger" size="small" type="primary">选取文件</el-button> <el-button size="small" type="success" @click="uploadFiles">上传</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> </template> <script> export default { data() { return { fileList: [] } }, methods: { beforeUpload(file) { const isJPG = file.type === 'image/jpeg' || file.type === 'image/png' const isLt2M = file.size / 1024 / 1024 < 2 if (!isJPG) { this.$message.error('上传图片只能是 JPG/PNG 格式!') } if (!isLt2M) { this.$message.error('上传图片大小不能超过 2MB!') } return isJPG && isLt2M }, handleUploadSuccess(response, file, fileList) { this.$message.success('上传成功!') }, uploadFiles() { this.$refs.upload.submit() } } } </script> ``` 在上面的示例中,我们使用了 el-upload 组件来创建上传组件,可以配置 action 属性来指定上传文件的服务器地址。同时,在 methods 方法中定义了 beforeUpload 和 handleUploadSuccess 两个方法来控制上传文件的规则和上传成功后的处理。最后,在 uploadFiles 方法中,我们调用了 $refs.upload.submit() 方法来触发文件上传。 希望这个回答能对您有所帮助,如果有任何疑问,请随时提出来。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值