element的上传如何获取路径_利用FileReader读取element-ui中上传组件el-upload上传的文件,实现先本地预览后上传至服务器(Vue)...

用elment-ui的上传组件上传用户头像时发现它的图片预览是需要先将图片发送到服务器,返回一个图片地址,然后根据这个地址在头像区显示,但是我想要的是:

选取头像,后立即在头像区显示,(不涉及图片剪辑和图片区域选取),而不是先上传到服务器。那么就需要获取一个图片在本地的地址。


- 浏览器出于安全考虑不让直接获取本地图片的路径,那我们就使用FileReader ( 或window.URL )去读取选择好的图片,返回一个DataURL,然后根据这个URL显示图片。
- 那么在el-upload组件中如何获取到选好的图片文件呢?el-upload组件的input标签是包在里面的,你只能在源码里看到它的input标签,首先我想到的是去源码里给input标签加个id,根据id找到这个元素,然后获取file,后来发现根本行不通,我无法通过id获取到这个元素,那么该怎么办呢? ![](https://img2018.cnblogs.com/blog/1702009/201907/1702009-20190712100012135-489339134.png)
- 经过多次尝试后发现,关闭自动上传属性后再去选取图片唯一能触发的钩子函数是on-change,注意:before-upload需要提交文件后才能触发,但是是在上传之前。on-change绑定的函数会有一个输入型参数,也就是event,但是这个event里面没有target属性,那该如何是好!我怎么获取input元素,不要着急,你会发现里面还有一个raw属性(后来发现file参数中也有raw属性),它就是你要的选取的文件数据! 根本不需要用document.getElementById(

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element UI的el-upload组件可以用于文件,并且支持文件功能。在使用el-upload组件时,你可以通过设置属性来启用文件功能。 首,确保你已经正确引入了Element UI库和el-upload组件。然后,在你的代码使用el-upload组件,并设置以下属性: 1. 设置`action`属性为文件的接口地址。 2. 设置`show-file-list`属性为`false`,以隐藏默认的文件列表展示。 3. 设置`on-success`属性为一个回调函数,用于处理文件成功后的逻辑。 4. 设置`before-upload`属性为一个回调函数,用于在文件之前进行一些操作,比如文件。 5. 在`before-upload`回调函数,可以通过`file`参数获取到当前上文件对象。你可以使用`FileReader`对象来读取文件内容,并将其显示在页面上。 下面是一个示例代码: ```html <template> <el-upload class="upload-demo" action="/your-upload-api" :show-file-list="false" :before-upload="handleBeforeUpload" :on-success="handleSuccess" > <el-button size="small" type="primary">点击上</el-button> </el-upload> </template> <script> export default { methods: { handleBeforeUpload(file) { // 使用FileReader读取文件内容并显示 const reader = new FileReader(); reader.onload = (e) => { // 在页面上显示文件 const preview = document.createElement('img'); preview.src = e.target.result; document.body.appendChild(preview); }; reader.readAsDataURL(file); // 返回false以阻止文件 return false; }, handleSuccess(response) { // 文件成功后的处理逻辑 console.log('文件成功', response); }, }, }; </script> ``` 这样,当用户选择文件后,会触发`before-upload`回调函数,你可以在该函数读取文件内容并显示。然后,文件会被阻止上,直到你处理完逻辑后再手动触发文件。 希望以上信息对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值