zoukankan      html  css  js  c++  java
  • html5文件读取+按钮样式重置+文件内容预览

    FileReader读取文件详细介绍请访问:http://www.cnblogs.com/xyyt/p/9066882.html

    FileReader提供了如下方法:

    readAsArrayBuffer(file) 按字节读取文件内容,结果用ArrayBuffer对象表示
    readAsBinaryString(file) 按字节读取文件内容,结果为文件的二进制串
    readAsDataURL(file) 读取文件内容,结果用data:url的字符串形式表示
    readAsText(file,encoding) 按字符读取文件内容,结果用字符串形式表示
    abort() 终止文件读取操作

    readAsDataURL和readAsText较为常用,这里以这两个为例,说明具体使用方法:

    1.readAsDataURL:readAsDataURL会将文件内容进行base64编码后输出。

    由于媒体文件的src属性,可以通过采用网络地址或base64的方式显示,因此我们可以利用readAsDataURL实现对图片的预览。

    2.readAsText:导入文档格式文件,默认按Utf-8格式读取,其他格式需要设置编码格式:

    readAsText(file,encoding)可按指定编码方式读取文件,但读取文件的单位是字符,故对于文本文件,只要按规定的编码方式读取即可;而对于媒体文件(图片、音频、视频),其内部组成并不是按字符排列,故采用readAsText读取,会产生乱码,因此不是最理想的读取文件的方式。

    示例代码如下:

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <style>
                .btn-info {
                    cursor: pointer;
                    width: 88px;
                    height: 36px;
                    line-height: 36px;
                    color: #fff;
                    background-color: #5bc0de;
                    border-color: #46b8da;
                    border: 1px solid transparent;
                    border-radius: 4px;
                }
            </style>
            <title></title>
        </head>
    
        <body>
            <div id="app">
                <div class="fileBtn">
                    <form id="uploadForm" action="" method="post" enctype="multipart/form-data">
                        <input type="file" name="uploadFile" id="uploadFile" @change="readFile" style="visibility:hidden;position:absolute;top:0px;0px" />
                        <!--隐藏默认标签样式-->
                    </form>
                    <input type="button" class="btn btn-info" value="导入文档" @click="clickUploadBtn" /> 支持.txt .doc .xls .cvs等文件格式
                </div>
                <article>
                    <h4>上传文档预览</h4>
                    <ul style="list-style: none;">
                        <li v-for="i in fileData">{{i}}</li>
                    </ul>
                    <h4>上传图片预览</h4>
                    <div><img :src="imgData"></div>
                </article>
            </div>
        </body>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script>
            Vue.config.silent = false;
            Vue.config.devtools = true;
            var app = new Vue({
                el: '#app',
                data: {
                    fileData: [],
                    imgData:""
                },
                created: function() {},
                mounted: function() {},
                methods: {
                    /**
                     * 上传按钮单击事件
                     */
                    clickUploadBtn: function() {
                        //触发file的点击事件
                        document.getElementById("uploadFile").click()
                    },
                    readFile: function() {
                        var inputBox = document.getElementById("uploadFile");
                        var fileName=inputBox.value;
                        var fileType;
                        var regImg=/(?:jpg|gif|png|jpeg)$/;
                        var reader = new FileReader();    
                        var self=this;
                        //发起异步请求
                        if(regImg.test(fileName)){
                            //图片格式文件
                            reader.readAsDataURL(inputBox.files[0]);
                            reader.onload = function() {
                                self.imgData=this.result
                                console.log(this.result)
                            }
                        }else{
                            //其他文档 格式(utf-8编码格式)
                            reader.readAsText(inputBox.files[0], "utf-8"); 
                            reader.onload = function() {
                                //读取完成后,数据保存在对象的result属性中
                                self.fileData = this.result.split("
    ")
                                console.log(this.result)
                            }
                        }    
                    }
                }
            })
        </script>
    </html>
  • 相关阅读:
    springMVC+ajax分页查询
    SSM ( Spring 、 SpringMVC 和 Mybatis )配置详解
    Spring整合Hibernate详细步骤
    Spring AOP 注解和xml实现 --转载
    spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
    SSH框架总结(框架分析+环境搭建+实例源码下载) 《转》
    对Spring的IoC和DI最生动的解释
    [转载]jQuery.extend 函数详解
    [转载]Request、Request.Form和Request.QueryString的区别
    [转载]用纯css改变下拉列表select框的默认样式
  • 原文地址:https://www.cnblogs.com/xyyt/p/9067222.html
Copyright © 2011-2022 走看看