elementui 上传图片先保存在本地
时间: 2023-10-27 18:12:22 浏览: 90
element-ui 的上传组件是基于 Upload 组件封装的,它提供了多种上传方式,其中包括上传前先保存在本地的方式。具体实现方法如下:
1. 设置上传组件的 action 属性为一个具体的 URL 地址或者一个接口方法。
```html
<el-upload
class="upload-demo"
action="/upload"
:before-upload="handleBeforeUpload"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
:data="formData"
:file-list="fileList"
multiple
:limit="3"
:auto-upload="false">
<el-button size="small" type="primary">上传文件</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
```
2. 设置 before-upload 钩子函数,在这个函数中,我们可以将文件保存到本地,并且返回 false,阻止文件上传。
```js
handleBeforeUpload(file) {
// 保存文件到本地
const fileReader = new FileReader();
fileReader.readAsDataURL(file);
fileReader.onload = (e) => {
const src = e.target.result;
this.fileList.push({
name: file.name,
url: src
});
};
// 阻止文件上传
return false;
}
```
3. 设置 uploadFiles 方法,在这个方法中,我们可以将保存在本地的文件上传到服务器。
```js
uploadFiles() {
// 上传所有保存在本地的文件
this.fileList.forEach(file => {
const formData = new FormData();
formData.append('file', file);
axios.post('/upload', formData)
.then(response => {
const res = response.data;
// 处理上传成功的响应
})
.catch(error => {
console.log(error);
// 处理上传失败的响应
});
});
}
```
通过以上步骤,我们可以实现将上传的文件先保存在本地,然后再上传到服务器的功能。需要注意的是,这种方式只适用于单文件上传,如果是多文件上传,需要对代码进行相应的修改。
阅读全文