iframe 的基本用法

该博客介绍了如何通过JavaScript的FileReader API实现文件预览,包括使用iframesrc展示HTML、文件链接和Base64编码的链接。文章详细展示了读取文件内容、转化为Base64字符串以及在新窗口中预览文件的过程,特别是针对包含中文内容的文件,使用了'gbk'编码进行读取。
摘要由CSDN通过智能技术生成

1.iframe src 可以展示 index.html 网页
2.iframe src 可以展示 文件链接
3…iframe src 可以展示 base64 链接

    const input = document.querySelector("#upload");
        input.addEventListener('change', function () {
            const files = this.files;
            console.log(files, '===123')
            const fileList = Object.entries(files).map(([_, file]) => {

                //  导入浏览器重
                // 文件的方法
                // var file = fileInput.files[0];
                // if (window.FileReader) {
                //     var reader = new FileReader();
                //     reader.onloadend = function (evt) {
                //         if (evt.target.readyState == FileReader.DONE) {
                //             callback(evt.target.result);
                //         }
                //     };
                //     // 包含中文内容用gbk编码
                //     reader.readAsText(file, 'gbk');
                // }
                // ------------------------------------------------------------------

                // const reader = new FileReader(); //这是核心,读取操作就是由它完成.
                // reader.readAsText(file);//读取文件的内容,也可以读取文件的URL
                // reader.onload = function () {
                //     //当读取完成后回调这个函数,然后此时文件的内容存储到了result中,直接操作即可
                //     console.log(this.result);

                //     let debug = this.result

                //     // 文件预览

                //     // let textarea = document.createElement('textarea')
                //     // textarea.value = debug;

                //     // document.body.appendChild(textarea)


                //     // 生成文件链接 iframe 来解析文件连接======================================
                //     // var blob = new Blob([debug], { type: 'text/plain' })
                //     // var url = window.URL.createObjectURL(blob)
                //     // //  打开预览  浏览器默认支持的格式都可以预览,如:txt,pdf,图片
                //     // var iframe = `<iframe  width='100%' height='100%' src=${url}></iframe > `
                //     // var x = window.open()
                //     // x.document.open()
                //     // // charset="gb2312"
                //     // // charset="gbk"
                //     // // charset="UTF-8"

                //     // // x.document.charset = "gbk"
                //     // // x.document.designMode = "On"
                //     // x.document.write(iframe)
                //     // x.document.close()

                // }

                // ========================================================================== base64 预览
                const reader = new FileReader(); //这是核心,   读取操作就是由它完成.
                reader.readAsDataURL(file, 'gbk');     // 生成base64  图片 内容 字节码  链接
                reader.onload = (e) => {

                    file.preview = e.target.result;

                    // 转化样式


                    // //  打开预览  浏览器默认支持的格式都可以预览,如:txt,pdf,图片
                    var iframe = "<iframe width='100%' height='100%' src='" + e.target.result + "'></iframe>"
                    var x = window.open()
                    x.document.open()
                    x.document.write(iframe)
                    x.document.close()


                    // 打开界面方式
                    // <a href="data:xxxxx"> 点击跳转
                    //  window.open(“data:xxx”)
                    //  window.location="data:xxx"

                    // 打开图片
                    // const img = new Image();
                    // img.src = this.base64String;
                    // const newWin = window.open("", "_blank");
                    // newWin.document.write(img.outerHTML);
                    // newWin.document.title = "流程图"
                    // newWin.document.close();

                }
                return file;




            });



            /* 
            *  file中的preview存的就是可以预览使用url,如果你需要保证fileList的顺序,
            *  请不要使用这种方式,你可以采用索引的方式存储,来保证它的顺序一致性
            */
            // console.log(fileList);
        }, false);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web修理工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值