请问element-ui 上传图片如何修改成base64格式的啊?

<el-upload
  class="upload-demo"
  action="https://jsonplaceholder.typicode.com/posts/"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :file-list="fileList">
  <el-button size="small" type="primary">点击上传</el-button>
  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
<script>
  export default {
    data() {
      return {
        fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
      };
    },
    methods: {
      handleRemove(file, fileList) {
        console.log(file, fileList);
      },
      handlePreview(file) {
        console.log(file);
      }
    }
  }
</script>

上面是element-ui的官方组件

阅读 5.7k
3 个回答
新手上路,请多包涵

看了一下源码,file 里有个属性 raw , 其实就是rawFile

把钩子挂在preview 上为例:

previewBanner(file){

            let reader = new FileReader()

            reader.onload = () => {

                let _base64 = reader.result
                
                doWhatUWant(_base64)//就可以做你想做的啦!!!
            }

            reader.readAsDataURL(file.raw)
        }

取到图片,然后转为base64,用你自己的接口上传不就好了

element-ui用的是formdata上传的吧,你要用base64只有自己写,其实formdata上传要好些

var myfile = document.getElementById('file');    
var List = document.getElementsByClassName('list')[0];
myfile.onchange = function(){
        var files = this.files;
        for(var i = 0;i<files.length;i++){   //多文件上传,单文件不用for,传files[0]就行了
            var oFReader = new FileReader();
            oFReader.readAsDataURL(files[i]);                            
            oFReader.onload = function (oFREvent) {
            console.log(oFReader);//oFREvent.target.result就是base64路径,上传时当字符串传就行了。
            var oLi = '<li><img src="'+oFREvent.target.result+'"><span class="close" onclick="closeli(this)" >&times;</span></li>';    
            List.innerHTML+=oLi;
            };
        }
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏