html_html5增强的文件上传域_FileList对象与File对象

FileList对象与File对象

type='file'的input标签都有两个属性:accept属性与multiple属性

  • accept:控制允许上传的文件类型,其属性值为一个或多个MIME类型字符串,多个MIME类型字符串之间用逗号间隔.
    测试accept属性:
<input type="file" name="" id="file" accept="'image/jpge','image/png'">
<!--你将只被允许使用这个文件上传域上传jpg格式和png格式的图片.点击后非该格式的文件不会出现在选择框中.-->
  • 测试multiple属性:
<input type="file" name="" id="file" accept="'image/jpge','image/png'" multiple>
<!--按住ctrl键可以选取多个文件-->

JavaScript可以通过files属性访问type='file'的<input>元素生成的文件上传域内的所有文件,该属性返回一个FileList对象.FileList可以近似看成数组,可以通过files[0],files[1]之类的方式去获取返回对象.

如图,我是上传了四张图片并获取input元素返回的files属性值得到的.FileList本质是一个对象,包括0,1,2...length等属性.而每个数字属性的值同样是一个File对象,包含有name\type\size等属性(还有其它属性但不重要).
每个file对象的属性:

  • name:所对应的文件名,不包含文件路径部分.
  • type:所对应文件的MIME类型字符串.
  • size:所对应文件的大小.
<body>
    <div class="container">
        <div class="card">
            <div class="card-header text-center">
                <input type="file" name="" id="file1" class="btn btn-info" accept="image/*">
            </div>
            <div class="card-body" id="info">

            </div>
            <div class="card-footer">
                <input type="button" value="点击获取文件信息" class="btn btn-dark btn-outline-light col-4 offset-4"
                    onclick="getFile()">
            </div>
        </div>
    </div>
    <script>
        function getFile() {
            var $ = function (id) {
                return (document.getElementById(id));
            };
            var fileName = $('file1').files[0].name;
            var fileType = $('file1').files[0].type;
            var fileSize = $('file1').files[0].size;
            $('info').innerHTML =
                `<strong>文件名称</strong>:${fileName}<hr><strong>文件类型</strong>:${fileType}<hr><strong>文件大小![](https://img2020.cnblogs.com/blog/1677030/202006/1677030-20200625152108513-773320149.png)

</strong>:${fileSize}`;
        }
    </script>
</body>
  • 样式

不要单靠accept属性来过滤文件夹,因为这只是客户端的文件类型过滤,这种文件类型过滤十分脆弱。开发者需要进行文件上传必须在服务器端对文件类型进行过滤

posted @ 2020-06-25 15:23  Syinho  阅读(489)  评论(0编辑  收藏  举报