点击上传图片并显示文件名和图片及获取input file的值和路径

原本的input type='file' 样式真的很丑,毫无美感而言,一直想写一个点击图片就显示的界面,现在终于研究出来了。

原本的input type='file'样式:

改变后的样式:

样式代码:

    <style type="text/css">
        li{list-style-type: none;margin-right: 10px;}
	 	ul li{float: left;}
        .img{opacity:0;}
        .imgs{border:1px solid #78C3F3;background: #AADFFD;color: #1E88C7;border-radius: 4px;text-align:center;cursor: pointer;
            padding:10px;}
        
    </style>

前端代码:

<ul class="iconlist">
            <li><div class="imgs" onclick="document.getElementById('img_1').click()">选择图片</div>
                    <input type="file" class="img" name="img[]" id="img_1" accept="image/*" onchange="l(this)"/></li>
            <li><div class="imgs" onclick="document.getElementById('img_2').click()">选择图片</div>
                    <input type="file" class="img" name="img[]" id="img_2" accept="image/*" onchange="l(this)"/></li>
            <li><div class="imgs" onclick="document.getElementById('img_3').click()">选择图片</div>
                    <input type="file" class="img" name="img[]" id="img_3" accept="image/*" onchange="l(this)"/></li>
            <li><div class="imgs" onclick="document.getElementById('img_4').click()">选择图片</div>
                    <input type="file" class="img" name="img[]" id="img_4" accept="image/*" onchange="l(this)"/></li>
            <li><div class="imgs" onclick="document.getElementById('img_5').click()">选择图片</div>
                    <input type="file" class="img" name="img[]" id="img_5" accept="image/*" onchange="l(this)"/></li>
            <li><div class="imgs" onclick="document.getElementById('img_6').click()">选择图片</div>
                    <input type="file" class="img" name="img[]" id="img_6" accept="image/*" onchange="l(this)"/></li>
        </ul>

显示图片的代码:

<ul class="iconlist">
                <li><div width="225px"><img src="" width="225px" id="1"/></div></li>
                <li><div width="225px"><img src="" width="225px" id="2"/></div></li>
                <li><div width="225px"><img src="" width="225px" id="3"/></div></li>
                <li><div width="225px"><img src="" width="225px" id="4"/></div></li>
                <li><div width="225px"><img src="" width="225px" id="5"/></div></li>
                <li><div width="225px"><img src="" width="225px" id="6"/></div></li>
            </ul>

JS代码:

<script type="text/javascript">

        function l(evn){
            var name = event.target.files[0].name;//获取上传的文件名
            var divObj= $(evn).prev()  //获取div的DOM对象
            $(divObj).html(name) //插入文件名
            var id = $(evn).attr('id');//获取id
            var num = id.substr(4,1)
            var file = event.target.files[0];
            if (window.FileReader) {
                var reader = new FileReader();
                reader.readAsDataURL(file);
                //监听文件读取结束后事件
                reader.onloadend = function (e) {
                    $("#"+num).attr("src",e.target.result);    //e.target.result就是最后的路径地址
                };
            }
        }
    </script>

效果如下:
 

注:js方法中用了jQuery的方法,需引入jQuery 

Web开发中,通常通过JavaScript的File API来实现在页面上点击按钮触发文件选择对话框的功能。以下是使用HTML5的一个基本示例: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件选择</title> </head> <body> <input type="file" id="selectFile" accept=".txt,.pdf"> <!-- 文件选择按钮 --> <button onclick="handleFileSelect()">选取文件</button> <script> function handleFileSelect() { // 创建一个FileReader对象 var reader = new FileReader(); // 当用户选择了文件并点击打开时,会触发这个事件 reader.onload = function(e) { // 获取文件名和完整路径 var fileName = e.target.result; console.log("文件名:", fileName); // 获取到的是文件路径,如果需要完整路径,浏览器环境需额外处理 // 在Node.js环境下,可以使用path模块解析 if (typeof window === 'undefined') { // 判断是否在浏览器环境 var pathModule = require('path'); var filePath = pathModule.dirname(fileName); console.log("完整路径:", filePath); } }; // 开始读取文件内容 reader.readAsText(document.getElementById('selectFile').files[0]); } </script> </body> </html> ``` 在这个例子中,当用户点击“选取文件”按钮时,`handleFileSelect`函数会被调用,它会创建一个FileReader实例,并设置其onload事件处理器来读取用户选择的文件。`e.target.result`将返回一个表示文件内容的字符串(如果是文本文件),而完整的路径则依赖于具体的环境处理。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值