input实现文件上传

<template>
    <div>
        <input
            name="file"
            type="file"
            id="file"
            style="display: none"
            @change="handleFileUpload"
        />
        <el-button type="primary" size="default" @click="upload">上传文件</el-button>
    </div>
</template>

<script>
export default {
    data() {
        return {};
    },
    methods: {
        handleFileUpload(event) {
            const file = event.target.files[0];
            if (!file.size)
                return this.$message.error("上传的文件为空文件,请重新上传!");
            if (
                file.name.indexOf(".pdf") === -1 &&
                file.name.indexOf(".docx") === -1 &&
                file.name.indexOf(".doc") === -1 &&
                file.name.indexOf(".txt") === -1
            )
                return this.$message.error("仅支持PDF,Word,Txt格式文件上传!");
            if (window.FileReader) {
                let reader = new FileReader();
                reader.onload = async () => {
                    // 将文件内容转换为Byte[]类型(Uint8Array)
                    const arrayBuffer = reader.result;
                    const byteArray = new Uint8Array(arrayBuffer);
                    // 根据需求 上传成功做的事~~~
                    // 1.可调用上传接口
                    // 2.保存文件byte进制的数据
                    this.$message.success("上传成功!");
                };
                reader.readAsArrayBuffer(file);
            }
        },
        upload() {
            let dom = document.getElementById("file");
            dom.click();
        }
    },
};
</script>

<style>
</style>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很抱歉,el-input并不能直接实现文件上传功能。el-input是一个基本的输入框组件,用于接收用户的输入。如果需要实现文件上传功能,可以使用el-upload组件。下面是一个简单的例子: ```html <template> <el-upload action="your-upload-api" :on-success="handleSuccess" :before-upload="beforeUpload" :file-list="fileList" list-type="picture-card" :auto-upload="false" :multiple="true" :limit="3" :on-exceed="handleExceed" :show-file-list="false" > <i class="el-icon-plus"></i> </el-upload> </template> <script> export default { data() { return { fileList: [] }; }, methods: { handleSuccess(response, file, fileList) { // 上传成功后的回调函数 console.log(response); }, beforeUpload(file) { // 上传前的校验函数 console.log(file); }, handleExceed(files, fileList) { // 上传文件数量超过限制的回调函数 this.$message.warning(`当前限制选择 ${this.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`); } } }; </script> ``` 在上面的代码中,我们使用了el-upload组件来实现文件上传功能。其中,action属性指定了上传文件的接口地址,on-success属性指定了上传成功后的回调函数,before-upload属性指定了上传前的校验函数,file-list属性指定了已上传的文件列表,list-type属性指定了文件列表的展示方式,auto-upload属性指定了是否自动上传,multiple属性指定了是否支持多文件上传,limit属性指定了上传文件数量的限制,on-exceed属性指定了上传文件数量超过限制的回调函数,show-file-list属性指定了是否展示已上传的文件列表。 需要注意的是,el-upload组件只是一个上传组件,如果需要将上传的图片转成在线链接,需要在后端实现相应的接口。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值