国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

用jQueryFileUpload做的上傳控件demo,支持同頁面多個上傳按鈕

2024-04-27 15:00:55
字體:
來源:轉載
供稿:網友

需求

有這么一個需求,一個form有多個文件要上傳,但又不是傳統的圖片批量上傳那種,是類似下圖這種需求,一開始是用的swfupload做的上傳,但是問題是如果有多個按鈕的話,就要寫很多重復的代碼,于為了代碼的簡潔所以就開始尋求其他的方法,期間試過uploadify,但是由于樣式始終調不出來,最后就放棄了,直到發現這么個小巧的玩意,jQuery File Upload。

 

本文包含了upload的js實現,html的分析,CSS的實現等內容,文章末尾有git地址

 

最簡運行時

官網下載的demo有N多js文件,一大堆js文件中只有幾個才是必要的,其他的文件都是一些用不到的功能,只有在你需要的時候才需要引用。

    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>    <script src="JS/jquery/jquery.iframe-transport.js"></script>    <script src="JS/jquery/jquery.ui.widget.js"></script>    <script src="JS/jquery/jquery.xdr-transport.js"></script>    <script src="JS/jquery/jquery.fileupload.js"></script>

 

其中iframe那個文件是為了進行iframe上傳,ui文件是能選完文件自動上傳的必要文件,xdr那個是在ie下才需要的,最后一個文件是主體

 

后臺代碼

新建一個ashx的文件,這里建立一個uploadHandler.ashx,然后寫入如下代碼,用于保存。

    public void PRocessRequest(HttpContext context)        {            context.Response.ContentType = "text/plain";            context.Response.Charset = "utf-8";            HttpPostedFile file = context.Request.Files["files"];            string uploadPath =                HttpContext.Current.Server.MapPath(@context.Request["folder"]) + "//";            if (file != null)            {                if (!Directory.Exists(uploadPath))                {                    Directory.CreateDirectory(uploadPath);                }                file.SaveAs(uploadPath + file.FileName);                //下面這句代碼缺少的話,上傳成功后上傳隊列的顯示不會自動消失                string newName = file.FileName;                string oldName = file.FileName;                context.Response.Write("{/"newName/": /"" + newName + "/", /"oldName/": /"" + oldName + "/"}");            }            else            {                context.Response.Write("0");            }        }

 

 

前臺HTML

預覽效果

最終的效果如上圖所示,為了實現這個我們一步一步來分析。

 

DIV結構

如上圖

  1. 作為整個控件的最外層
  2. 是按鈕
  3. 是上傳完成后顯示的文件名(上傳開始前隱藏)
  4. 上傳進度百分比(上傳開始前隱藏)
  5. 上傳進度條(上傳開始前隱藏)

 

上圖后4個div按照順序寫在最外層里面,然后考慮通過浮動來解決位置的問題,當然也可以用絕對定位等方法來實現,這里選擇了浮動。

因為要用到浮動,這里簡單解釋一下浮動的原理

首先設置0的寬度是280px

所以1的寬度就是70+margin-right:8 右側還有202寬度,左浮動

2的寬度是150px,左浮動

3的寬度不設置,右浮動

4的寬度是200+border:2 一共202寬度,左浮動

 

然后再設置上傳按鈕,如果不設置樣式,上傳按鈕是這樣的

這樣顯然是老套的樣式了,在網上找了一個解決方案是這樣的

配合這樣的樣式

就可以做出這個效果了

所以html的代碼如下:

   <style>body{padding:10px}/* 上傳控件 */.upload{    margin-top:10px;    width:280px;    height:30px;}.upload .uploadbtnBox{    float:left;    height:30px;    width:70px;    margin-right:8px;}.upload .progress{    height:4px;    line-height:4px;    *zoom:1;    background:#fff;    float:left;    width:200px;    border:1px #ccc solid;    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;    display:none;}.upload .filestate{    float:left;    height:20px;    text-align:left;    width:150px;    line-height:20px;    display:none;    color:#333;    overflow:hidden;}.upload .progresspercent{    float:right;    padding-top:5px;    height:15px;    text-align:right;    font-size:9px;    line-height:15px;    color:#333;}.upload .uploadbtnBox .a-upload {    height:28px;    background:#4090c0;    border:1px solid #dddddd;color:#ffffff;    line-height:28px;    padding:0 6px;    font-size:0.9em;    overflow: hidden;    display: inline-block;    text-decoration:none;    *display: inline;    *zoom: 1}.upload .uploadbtnBox .a-upload  input {    position: absolute;    width:70px;    height:30px;    overflow:hidden;    margin-left:-10px;    opacity: 0;    filter: alpha(opacity=0);    cursor: pointer}.upload .progress .bar{    height:4px;    line-height:4px;    background:#4090c0;    *zoom:1; }.clearfix:after {    content: ".";    display: block;    height: 0;    visibility: hidden;    clear: both;}.clearfix {    _zoom: 1;}.clearfix {*zoom:1;}    </style><div class="upload clearfix">        <div class="uploadbtnBox clearfix">            <a href="Javascript:;" class="a-upload">                <input type="file" data-url="uploadHandler.ashx" name="files" value="" id="file7"                    onchange="CheckFile(this)" />點擊上傳 </a>        </div>        <div class="filestate">            文件名</div>        <div class="progresspercent">        </div>        <div class="progress" style="height: 4px;">            <div class="bar" style="width: 0%;">            </div>        </div>    </div>
View Code
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富宁县| 东海县| 绩溪县| 岳阳县| 阳曲县| 东乌| 连江县| 柳江县| 潢川县| 新营市| 东乌珠穆沁旗| 广安市| 红河县| 祁门县| 英山县| 建阳市| 龙南县| 台北市| 吉安市| 彭阳县| 遂平县| 尉犁县| 临沂市| 恭城| 沂源县| 柯坪县| 富顺县| 横山县| 吉木萨尔县| 巴林右旗| 武义县| 日喀则市| 合水县| 东安县| 宜良县| 北流市| 和顺县| 苍溪县| 莆田市| 大余县| 南昌县|