js 實(shí)現(xiàn) input type="file" 文件上傳示例代碼
更新時(shí)間:2013年08月07日 15:51:28 作者:
在開發(fā)中,文件上傳必不可少但是它長得又丑、瀏覽的字樣不能換,一般會讓其隱藏點(diǎn)其他的標(biāo)簽(圖片等)來時(shí)實(shí)現(xiàn)選擇文件上傳功能
在開發(fā)中,文件上傳必不可少,<input type="file" /> 是常用的上傳標(biāo)簽,但是它長得又丑、瀏覽的字樣不能換,我們一般會用讓,<input type="file" />隱藏,點(diǎn)其他的標(biāo)簽(圖片等)來時(shí)實(shí)現(xiàn)選擇文件上傳功能。
看代碼:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="js/jquery/jquery-1.8.2.min.js" type="text/javascript"></script>
<style type="text/css">
._box
{
width: 119px;
height: 37px;
background-color: #53AD3F;
background-image: url(images/bg.png);
background-repeat: no-repeat;
background-position: 0 0;
background-attachment: scroll;
line-height: 37px;
text-align: center;
color: white;
cursor: pointer;
}
.none
{
width: 0px;
height: 0px;
display: none;
}
</style>
<title>js 實(shí)現(xiàn) input file 文件上傳 /></title>
</head>
<body>
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<div>
<div class="_box">選擇圖片</div>
</div>
<div class="none">
<input type="file" name="_f" id="_f" />
</div>
</form>
</body>
</html>
<script type="text/javascript">
jQuery(function () {
$("._box").click(function () {
$("#_f").click();
});
});
</script>
但是在火狐和一些高版本的瀏覽器中后臺可以獲取到要上傳的文件,一些低版本的瀏覽器壓根就獲取不到Request.Files
查閱資料,有說改成這樣的:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="js/jquery/jquery-1.8.2.min.js" type="text/javascript"></script>
<style type="text/css">
._box
{
width: 119px;
height: 37px;
background-color: #53AD3F;
background-image: url(images/bg.png);
background-repeat: no-repeat;
background-position: 0 0;
background-attachment: scroll;
line-height: 37px;
text-align: center;
color: white;
cursor: pointer;
}
.none
{
width: 0px;
height: 0px;
display: none;
}
</style>
<title>js 實(shí)現(xiàn) input file 文件上傳 /></title>
</head>
<body>
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<div>
<div class="_box">選擇圖片</div>
</div>
<div class="none">
<input type="file" name="_f" id="_f" />
</div>
</form>
</body>
</html>
<script type="text/javascript">
jQuery(function () {
$("._box").click(function () {
return $("#_f").click();
});
});
</script>
加了一個(gè)return關(guān)鍵字,兼容性提高了不少,但是有的瀏覽器還是不好用。
我們發(fā)現(xiàn)只有手動點(diǎn)擊<input type="file" />后臺就一定能獲取到要上傳的文件
于是我們可以透明<input type="file" />
修改代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
._box
{
position: relative;
width: 119px;
height: 37px;
background-color: #53AD3F;
background-image: url(images/bg.png);
background-repeat: no-repeat;
background-position: 0 0;
background-attachment: scroll;
line-height: 37px;
text-align: center;
color: white;
cursor: pointer;
overflow: hidden;
z-index: 1;
}
._box input
{
position: absolute;
width: 119px;
height: 40px;
line-height: 40px;
font-size: 23px;
opacity: 0;
filter: "alpha(opacity=0)";
filter: alpha(opacity=0);
-moz-opacity: 0;
left: -5px;
top: -2px;
cursor: pointer;
z-index: 2;
}
</style>
<title>js 實(shí)現(xiàn) input file 文件上傳 /></title>
</head>
<body>
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<div>
<div class="_box">
<input type="file" name="_f" id="_f" />
選擇圖片
</div>
</div>
</form>
</body>
</html>
我們點(diǎn)擊選擇圖片實(shí)際點(diǎn)擊了不透明度為0的 <input type="file" />,單用戶切看不到 <input type="file" />后臺亦可以獲取到要上傳的文件了。
ok
總結(jié):
用一個(gè)不透明度為0的 <input type="file" />蓋在要用戶可見的標(biāo)簽(或圖片等)上,讓用戶點(diǎn)擊。
用 width height line-height font-size 來控制<input type="file" />右側(cè)瀏覽按鈕的大小。
用 left top (right 、 bottum)來控制<input type="file" />右側(cè)瀏覽按鈕的位置,可以設(shè)置為負(fù)值。
用z-index來設(shè)置它們的層覆蓋關(guān)系。
form 必須有enctype="multipart/form-data"標(biāo)記才能上傳文件
看代碼:
復(fù)制代碼 代碼如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="js/jquery/jquery-1.8.2.min.js" type="text/javascript"></script>
<style type="text/css">
._box
{
width: 119px;
height: 37px;
background-color: #53AD3F;
background-image: url(images/bg.png);
background-repeat: no-repeat;
background-position: 0 0;
background-attachment: scroll;
line-height: 37px;
text-align: center;
color: white;
cursor: pointer;
}
.none
{
width: 0px;
height: 0px;
display: none;
}
</style>
<title>js 實(shí)現(xiàn) input file 文件上傳 /></title>
</head>
<body>
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<div>
<div class="_box">選擇圖片</div>
</div>
<div class="none">
<input type="file" name="_f" id="_f" />
</div>
</form>
</body>
</html>
<script type="text/javascript">
jQuery(function () {
$("._box").click(function () {
$("#_f").click();
});
});
</script>
但是在火狐和一些高版本的瀏覽器中后臺可以獲取到要上傳的文件,一些低版本的瀏覽器壓根就獲取不到Request.Files
查閱資料,有說改成這樣的:
復(fù)制代碼 代碼如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="js/jquery/jquery-1.8.2.min.js" type="text/javascript"></script>
<style type="text/css">
._box
{
width: 119px;
height: 37px;
background-color: #53AD3F;
background-image: url(images/bg.png);
background-repeat: no-repeat;
background-position: 0 0;
background-attachment: scroll;
line-height: 37px;
text-align: center;
color: white;
cursor: pointer;
}
.none
{
width: 0px;
height: 0px;
display: none;
}
</style>
<title>js 實(shí)現(xiàn) input file 文件上傳 /></title>
</head>
<body>
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<div>
<div class="_box">選擇圖片</div>
</div>
<div class="none">
<input type="file" name="_f" id="_f" />
</div>
</form>
</body>
</html>
<script type="text/javascript">
jQuery(function () {
$("._box").click(function () {
return $("#_f").click();
});
});
</script>
加了一個(gè)return關(guān)鍵字,兼容性提高了不少,但是有的瀏覽器還是不好用。
我們發(fā)現(xiàn)只有手動點(diǎn)擊<input type="file" />后臺就一定能獲取到要上傳的文件
于是我們可以透明<input type="file" />
修改代碼如下:
復(fù)制代碼 代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
._box
{
position: relative;
width: 119px;
height: 37px;
background-color: #53AD3F;
background-image: url(images/bg.png);
background-repeat: no-repeat;
background-position: 0 0;
background-attachment: scroll;
line-height: 37px;
text-align: center;
color: white;
cursor: pointer;
overflow: hidden;
z-index: 1;
}
._box input
{
position: absolute;
width: 119px;
height: 40px;
line-height: 40px;
font-size: 23px;
opacity: 0;
filter: "alpha(opacity=0)";
filter: alpha(opacity=0);
-moz-opacity: 0;
left: -5px;
top: -2px;
cursor: pointer;
z-index: 2;
}
</style>
<title>js 實(shí)現(xiàn) input file 文件上傳 /></title>
</head>
<body>
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<div>
<div class="_box">
<input type="file" name="_f" id="_f" />
選擇圖片
</div>
</div>
</form>
</body>
</html>
我們點(diǎn)擊選擇圖片實(shí)際點(diǎn)擊了不透明度為0的 <input type="file" />,單用戶切看不到 <input type="file" />后臺亦可以獲取到要上傳的文件了。
ok
總結(jié):
用一個(gè)不透明度為0的 <input type="file" />蓋在要用戶可見的標(biāo)簽(或圖片等)上,讓用戶點(diǎn)擊。
用 width height line-height font-size 來控制<input type="file" />右側(cè)瀏覽按鈕的大小。
用 left top (right 、 bottum)來控制<input type="file" />右側(cè)瀏覽按鈕的位置,可以設(shè)置為負(fù)值。
用z-index來設(shè)置它們的層覆蓋關(guān)系。
form 必須有enctype="multipart/form-data"標(biāo)記才能上傳文件
您可能感興趣的文章:
- JS文件上傳神器bootstrap fileinput詳解
- 原生JS實(shí)現(xiàn)前端本地文件上傳
- 原生JS和jQuery版實(shí)現(xiàn)文件上傳功能
- 學(xué)習(xí)使用AngularJS文件上傳控件
- JS簡單實(shí)現(xiàn)文件上傳實(shí)例代碼(無需插件)
- ajaxFileUpload.js插件支持多文件上傳的方法
- 分享5個(gè)好用的javascript文件上傳插件
- SpringBoot+Vue.js實(shí)現(xiàn)前后端分離的文件上傳功能
- 基于HTML5+js+Java實(shí)現(xiàn)單文件文件上傳到服務(wù)器功能
- 原生JS實(shí)現(xiàn)文件上傳
相關(guān)文章
高性能Javascript筆記 數(shù)據(jù)的存儲與訪問性能優(yōu)化
在JavaScript中,數(shù)據(jù)的存儲位置對代碼的整體性能有著重要的影響。有四種數(shù)據(jù)訪問類型:直接量,局部變量,數(shù)組項(xiàng),對象成員2012-08-08
Javascript實(shí)現(xiàn)動態(tài)菜單添加的實(shí)例代碼
在注冊信息的時(shí)候,常常需要通過下拉菜單讓用戶選擇,而且希望用戶在第一個(gè)下拉框做的選擇,影響第二個(gè)下拉框的內(nèi)容。有時(shí)候,如果第一個(gè)下拉框不作出選擇,第二個(gè)下拉框根本不會頁面上顯示,為了給用戶呈現(xiàn)一個(gè)更清晰的頁面。2013-07-07
LayUI switch 開關(guān)監(jiān)聽 獲取屬性值、更改狀態(tài)的方法
今天小編就為大家分享一篇LayUI switch 開關(guān)監(jiān)聽 獲取屬性值、更改狀態(tài)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
JS實(shí)現(xiàn)在網(wǎng)頁中彈出一個(gè)輸入框的方法
這篇文章主要介紹了JS實(shí)現(xiàn)在網(wǎng)頁中彈出一個(gè)輸入框的方法,實(shí)例分析了prompt的用法,可用來設(shè)置密碼,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
Javascript Function對象擴(kuò)展之延時(shí)執(zhí)行函數(shù)
這篇文章主要介紹 在js里面怎么延時(shí)執(zhí)行一個(gè)函數(shù)?2010-07-07
javascript不同類型數(shù)據(jù)之間的運(yùn)算的轉(zhuǎn)換方法
這篇文章主要介紹了javascript不同類型數(shù)據(jù)之間的運(yùn)算的轉(zhuǎn)換方法,需要的朋友可以參考下2014-02-02

