element ui 读取upload上传文件并显示

7 篇文章 0 订阅
1 篇文章 0 订阅

在vscode插件 webview中读取文件并显示

<div id="hostAdd" class="content">
    <div class="content-inner content600 newhost">
        <div class="content-title align-center">新建目标机</div>
        <div class="content-sec">
            <el-form ref="form" :model="form" label-width="120px">
                <el-form-item label="目标机名称:">
                  <el-input v-model="form.hostname"></el-input>
                </el-form-item>
                <el-form-item label="IP:">
                  <el-input v-model="form.ip"></el-input>
                </el-form-item>
                <el-form-item label="Password:">
                  <el-input v-model="form.password"></el-input>
                </el-form-item>
                <el-form-item label="Public key:">
                  <el-upload class="upload-demo" action="#" :file-list="fileList" :on-change="handleChange" :auto-upload="false">
                    <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
                  </el-upload>
                </el-form-item>
                <el-form-item>
                    <el-input type="textarea" ref="text" id="text" :rows="8" placeholder="" v-model="form.key"></el-input>
                </el-form-item>
                <el-form-item>
                  <el-button  @click="onCreated()">创建</el-button>
                </el-form-item>
            </el-form>
        </div>
    </div>
</div>
</div>
<script>
    // 初始化vscode插件api
    // var vscode = acquireVsCodeApi();

    window.addEventListener('message', function (e) {
        console.log('e.data: ', e.data);
        if (e.data.id === "hostlistCreatedData") {
            console.log('目标机传回的data2:', e.text);
        }
    })

    new Vue(
        {
            el: '#hostAdd',
            data: function () {
                return {
                    form: {
                        hostname: '',
                        ip: '',
                        password: '',
                        key: ''
                    },
                    fileList:[],
                }
            },
            created() {
                this.form.hostname = "initial name";
            },
            methods: {
                onCreated() {
                        let formData= this.form;
                        vscode.postMessage({
                                id: "hostlistCreated",
                                text: formData
                        })
                    },

                    handleChange(file, fileList){
                          if(fileList.length>0) {
                            // this.fileList = [fileList[fileList.length-1]];
                            this.fileList = [fileList[fileList.length-1]]
                          }
                          let _this = this;
                          if (file.raw) { 
                            console.log("file raw: ", file.raw);
                            let reader = new FileReader(); //新建一个FileReader
                            reader.readAsText(file.raw, "UTF-8"); //读取文件
                            reader.onload = function (evt) { //读取完文件之后会回来这里
                              let fileString = evt.target.result; // 读取文件内容
                              _this.form.key = fileString; //赋值给textarea
                            }
                          }
                    },
            },
        })
</script>

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、付费专栏及课程。

余额充值