成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Bootstrap File Input文件上傳組件

Bootstrap File Input文件上傳組件

熱門標簽:高德地圖標注地點糾錯 南昌仁和怎么申請開通400電話 如何獲取地圖標注客戶 拓展地圖標注 平?jīng)龅貓D標注位置怎么弄 電話機器人黑斑馬免費 機器人外呼系統(tǒng)存在哪些能力 電話機器人電銷系統(tǒng)掙話費 只辦理400電話

本篇介紹如何使用 Bootstrap File Input(最好用的文件上傳組件)來進行圖片的展示、上傳,以及如何在服務器端進行文件保存。

一、先來看效果圖吧


二、引入插件的樣式和腳本

<link type="text/css" rel="stylesheet" href="${ctx}/components/fileinput/css/fileinput.css" />
<script type="text/javascript" src="${ctx}/components/fileinput/js/fileinput.js"></script>
<script type="text/javascript" src="${ctx}/components/fileinput/js/fileinput_locale_zh.js"></script>

http://plugins.krajee.com/file-input,這是其官方文檔,里面有下載地址。

三、在頁面上添加組件

<input type="file" name="image" class="projectfile" value="${deal.image}"/>

type=file和class=projectfile,指明其為input file類型。name指定其在后臺的獲取key。value指定其在展示的時候圖片路徑。

四、初始化

projectfileoptions : {
		showUpload : false,
		showRemove : false,
		language : 'zh',
		allowedPreviewTypes : [ 'image' ],
		allowedFileExtensions : [ 'jpg', 'png', 'gif' ],
		maxFileSize : 2000,
	},
// 文件上傳框
$('input[class=projectfile]').each(function() {
	var imageurl = $(this).attr("value");

	if (imageurl) {
		var op = $.extend({
			initialPreview : [ // 預覽圖片的設置
			"<img src='" + imageurl + "' class='file-preview-image'>", ]
		}, projectfileoptions);

		$(this).fileinput(op);
	} else {
		$(this).fileinput(projectfileoptions);
	}
});

通過jquery獲取對應的input file,然后執(zhí)行fileinput方法。showUpload 設置是否有上傳按鈕。language指定漢化
4. allowedFileTypes 、allowedFileExtensions 不知道為什么沒有起到效果?maxFileSize 指定上傳文件大小 五、帶file文件的form表單通過ajax提交

我們先來看帶file的form表單布局。

<form class="form-horizontal required-validate" action="${ctx}/save?callbackType=confirmTimeoutForward" enctype="multipart/form-data" method="post" οnsubmit="return iframeCallback(this, pageAjaxDone)">

	<div class="form-group">
		<label for="" class="col-md-1 control-label">項目封面</label>
		<div class="col-md-10 tl th">
			<input type="file" name="image" class="projectfile" value="${deal.image}" />
			<p class="help-block">支持jpg、jpeg、png、gif格式,大小不超過2.0M</p>
		</div>
	</div>	
	<div class="form-group text-center ">
		<div class="col-md-10 col-md-offset-1">
			<button type="submit" class="btn btn-primary btn-lg">保存</button>
		</div>
	</div>
</form>		

enctype="multipart/form-data"必不可少。οnsubmit="return iframeCallback(this, pageAjaxDone)"方法,通過ajax提交表單(iframeCallback),并且上傳成功后調(diào)用回調(diào)函數(shù)(pageAjaxDone)進行下一步操作。

關于iframeCallback的介紹,請參照summernote所在form表單的數(shù)據(jù)提交,這里就不多做介紹了。

然后我們來介紹一下回調(diào)函數(shù)pageAjaxDone。

function pageAjaxDone(json) {
	YUNM.debug(json);
	YUNM.ajaxDone(json);

	if (json[YUNM.keys.statusCode] == YUNM.statusCode.ok) {
		var msg = json[YUNM.keys.message];
		// 彈出消息提示
		YUNM.debug(msg);

		if (YUNM.callbackType.confirmTimeoutForward == json.callbackType) {
			$.showSuccessTimeout(msg, function() {
				window.location = json.forwardUrl;
			});
		}
	}
}

其主要的功能就是通過ajaxDone方法處理服務端傳遞過來的錯誤消息,假如說服務端操作成功,那么會顯示提示信息,進而跳轉(zhuǎn)到對應的url。

六、服務器端保存圖片

請參照后端springMVC文件保存

ps:以上博客留了一個小疑問,一直沒有去研究,直到有位非常棒的小伙伴 ihchenchen 給了我如下的提醒:

allowedFileTypes 、allowedFileExtensions 我知道為什么沒有效果,因為 fileinput() 方法調(diào)用了兩次,一次在 fileinput.js 里面最后幾行,還有一次就是你自己寫的 $(this).fileinput()。在fileinput.js里的是沒有設置allowedFileTypes 、allowedFileExtensions 值的。

有兩種方法可以改:
1、把fileinput.js里的最后幾行調(diào)用注釋掉。
2、全部使用“data-”的方法來做,不寫$(this).fileinput()。

對于ihchenchen善意的提醒,我非常的感謝,雖然他提供的解釋并沒有解決我的疑問,但是我很喜歡這樣有互動的技術(shù)交流,之前寫很多博客,基本上很少發(fā)生這樣善意并且行之有效的回答。這讓我想起中國程序員和外國程序員,里面的故事讓人震撼之余,捎帶著些許的慚愧。那么如何做到“Ask questions, get answers, no distractions。”就顯得特別珍貴,而“ihchenchen”則充滿這種精神!

六、解惑allowedFileTypes 、allowedFileExtensions

之前困惑為什么bootstrap fileinput為什么設置了這兩個屬性后,沒有效果,其實是我自己的誤解,如今經(jīng)過一番痛徹的領悟后恍然大悟!

①、allowedFileTypes

allowedFileTypes
array the list of allowed file types for upload. This by default is set to null which means the plugin supports all file types for upload. If an invalid file type is found, then a validation error message as set in msgInvalidFileType will be raised. The following types as set in fileTypeSettings are available for setup.

[‘image’, ‘html’, ‘text’, ‘video’, ‘audio’, ‘flash’, ‘object’]

先從“allowedFileTypes”說起,該屬性告知我們文件的選擇類型,那么我們很容易想到這樣的畫面:
 

也就是說,我們希望此時的“所有文件”處不是“所有文件”,而是“image”之類的。顯然這樣的邏輯并沒有錯,但卻不適合bootstrap fileinput!

那么,這個時候我就很容易認為“allowedFileTypes” 沒有起到作用!

但請看下圖:

吼吼,原來是在你選擇了文件后發(fā)生的類型檢查!

②、allowedFileTypes工作原理

$(this).fileinput({
				showUpload : false,
				showRemove : false,
				language : 'zh',
				allowedPreviewTypes: ['image'],
		        allowedFileTypes: ['image'],
		        allowedFileExtensions:  ['jpg', 'png'],
				maxFileSize : 2000,
				
			});

通過fileinput方法我們加載一個bootstrap fileinput組件,那么其內(nèi)部是如何實現(xiàn)allowedFileTypes的呢?

通過在fileinput.js文件中搜索“allowedFileTypes”關鍵字,我們得到如下代碼:

var node = ctr + i, previewId = previewInitId + "-" + node, isText, file = files[i],
                    caption = self.slug(file.name), fileSize = (file.size || 0) / 1000, checkFile, fileExtExpr = '',
                    previewData = objUrl.createObjectURL(file), fileCount = 0, j, msg, typ, chk,
                    fileTypes = self.allowedFileTypes, strTypes = isEmpty(fileTypes) ? '' : fileTypes.join(', '),
                    fileExt = self.allowedFileExtensions, strExt = isEmpty(fileExt) ? '' : fileExt.join(', ');

然后我們繼續(xù)看到如下的代碼:

if (!isEmpty(fileTypes) && isArray(fileTypes)) {
                    for (j = 0; j < fileTypes.length; j += 1) {
                        typ = fileTypes[j];
                        checkFile = settings[typ];
                        chk = (checkFile !== undefined && checkFile(file.type, caption));
                        fileCount += isEmpty(chk) ? 0 : chk.length;
                    }
                    if (fileCount === 0) {
                        msg = self.msgInvalidFileType.replace('{name}', caption).replace('{types}', strTypes);
                        self.isError = throwError(msg, file, previewId, i);
                        return;
                    }
                }

我們可以發(fā)現(xiàn),文件類型的檢查是發(fā)生在checkFile方法上,那么checkFile方法到底做了些什么呢?

defaultFileTypeSettings = {
        image: function (vType, vName) {
            return (vType !== undefined) ? vType.match('image.*') : vName.match(/\.(png|jpe?g)$/i);
        },
        ...

以上就是checkFile的內(nèi)容。

也就是說當我們指定allowedFileTypes: ['image'],時,就會進行image的類型檢查。顯然我們選擇的txt文件不屬于image類型,那么就會匹配不上,出現(xiàn)以上界面。同時,該方法告訴我們,當不指定allowedFileTypes: ['image'],,只指定allowedFileExtensions: ['jpg', 'png'],就會執(zhí)行vName.match(/\.(png|jpe?g)$/i),也就是文件后綴類型的檢查,這點很關鍵啊,為我們接下來介紹“allowedFileExtensions”奠定基礎。 ③、allowedFileExtensions什么時候起作用

上節(jié)我們討論完“allowedFileTypes”,捎帶說了“allowedFileExtensions”,那么如何讓后綴進行check呢?

	$(this).fileinput({
				showUpload : false,
				showRemove : false,
				language : 'zh',
				allowedPreviewTypes: ['image'],
		        allowedFileExtensions:  ['jpg', 'png'],
				maxFileSize : 2000,
				
			});

fileinput組件此時指定的屬性如上,沒有了“allowedFileTypes”,并且指定允許的后綴類型為“[‘jpg’, ‘png’]”,也就是說,假如我們選擇了gif的圖片就會出現(xiàn)錯誤提示。

錯誤預期的發(fā)生了,那么請?zhí)貏e注意:

image: function (vType, vName) {
            return (vType !== undefined) ? vType.match('image.*') : vName.match(/\.(png|jpe?g)$/i);
        },

fileinput.js文件中原始的代碼如下:

image: function (vType, vName) {
            return (vType !== undefined) ? vType.match('image.*') : vName.match(/\.(gif|png|jpe?g)$/i);
        },

image類型的后綴當然默認包含了gif,我只是為了舉例說明,代碼做了調(diào)整,請注意!

到此這篇關于Bootstrap File Input文件上傳組件的文章就介紹到這了,更多相關Bootstrap File Input文件上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

標簽:新疆 棗莊 漯河 池州 西藏 永州 青島 遼源

巨人網(wǎng)絡通訊聲明:本文標題《Bootstrap File Input文件上傳組件》,本文關鍵詞  Bootstrap,File,Input,文件,上傳,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 下面列出與本文章《Bootstrap File Input文件上傳組件》相關的同類信息!
  • 本頁收集關于Bootstrap File Input文件上傳組件的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    狠狠干夜夜操| 精品成人免费一区二区在线播放| 男男受被啪到高潮自述| 中文字幕在线视频日韩| 天天碰夜夜操| 小小水蜜桃在线观看| 久久中文字幕在线观看| 伊人精品成人久久综合软件| 婷婷亚洲五月色综合| 欧美一区二区三区视频免费| 欧美国产精品| 精品视频在线一区二区在线| 国产三级精品在线不卡| 在线观看网站免费入口在线观看国内| 一区二区三区在线播放欧美| 国产一区二区三区视频在线播放| 韩国xxxx做受gayxxxx| 国产亚洲精品一区二区| www.久久爱.cn| 亚洲国产欧洲综合997久久| 免费福利影院| 久久99久久精品| 日韩黄色三级| 成人欧美视频在线| 91精品啪在线观看国产手机| 91精品国产综合久久久蜜臀图片| 性欧美高清视频| 日本一区二区三级电影在线观看| 亚洲天堂福利av| 久久中文字幕免费| 午夜精品一区| 亚洲激情一区二区三区| 精久久久久久| 日本精品在线中文字幕| 国产a区久久久| 亚洲一区二区免费视频软件合集| 日韩高清免费观看| 亚洲五月天综合| 中文字幕av一区二区三区人| 久久精品国产福利| 99re热在线观看| 国产伦精品一区二区三区免费视频| 中文字幕一区二区三区人妻电影| 波多野结衣家庭教师| 久久99国产精品尤物| 乱人伦中文字幕在线zone| 国产性网软件大全| 欧美一区二区视频97| 欧美激情xxxx性bbbb| 毛片在线导航| 午夜精品福利视频| 福利一区二区在线| 亚洲欧美视频一区二区| 天天综合色天天综合| 日本中文字幕免费观看| 免费观看成年人视频在线观看| 欧美暴力喷水在线| 国产在线一区二区| 国内av在线播放| 91视频最新网址| 国产mv久久久| 色悠久久久久综合网小说| 欧美精品一线| 欧美高清电影在线| 波多野结衣在线播放| 久久久久久久成人| 国产偷窥老熟盗摄视频| 性欧美大战久久久久久久| 18岁网站在线观看| 一区免费在线| 国产精品白丝jk黑袜喷水| 三级a三级三级三级a十八发禁止| 欧美国产精品| av首页在线观看| www.欧美色| 99久久99久久精品国产片果冰| 免费人成a大片在线观看动漫| 欧美超级免费视 在线| 欧美午夜性囗交xxxx| 黄网动漫久久久| 成人h动漫精品一区二区无码| 国产字幕中文| 手机在线免费观看毛片| 中文字幕永久在线不卡| 天天干天天操天天玩| 艳妇乳肉豪妇荡乳av无码福利| 亚洲精品一区二区妖精| 中文字幕在线免费视频| 男女网站在线观看| 欧美网站在线| 国产精品白浆流出视频| 欧美成人禁片在线www| 中文字幕在线欧美| 亚洲妇女屁股眼交7| 88xx成人永久免费观看| 国产在线观看免费视频今夜| 一级片一区二区三区| 国产精品久久久久久久久快鸭| 欧洲美女7788成人免费视频| 亚洲国产另类久久久精品极度| 国产成人av电影在线播放| 五月天亚洲视频| 日韩精品一区二区三区久久| 91麻豆精品国产91久久久更新时间| 韩国女主播一区二区| 亚洲18女电影在线观看| 亚洲在线电影| 99久久精品免费精品国产| 三级av网站| 亚洲成人男人天堂| 午夜精品久久久久99热蜜桃导演| 日韩专区第一页| 欧美精品久久99久久在免费线| 粉嫩13p一区二区三区| 欧美精品三级日韩久久| 国产精品最新乱视频二区| 免费看成年人视频| 黄色免费视频大全| 亚洲乱码精品一二三四区日韩在线| 亚洲成人免费视| 不卡的看片网站| 婷婷精品在线| 亚洲欧美偷拍卡通变态| 高清国产mv在线观看| 一本色道久久88综合亚洲精品ⅰ| 68精品久久久久久欧美| 欧洲美女女同性互添| 久久夜色电影| 99久久免费精品| 久久精品最新免费国产成人| 91免费看国产| 久久亚洲精品小早川怜子66| 99国产精品99久久久久久| 网曝91综合精品门事件在线| 色内内免费视频播放| 在线免费看黄av| 高跟丝袜欧美一区| 亚洲日本va| 在线观看国产欧美| 欧美成人精品| 日本高清免费不卡视频| 天使と恶魔の榨精在线播放| 日韩欧美1区| 国产精一品亚洲二区在线视频| 黄色网址在线免费观看| 亚洲精品天堂成人片av在线播放| 欧美麻豆精品久久久久久| 视频午夜在线| 免费日韩av片| 欧美日韩久久一区二区| 国产免费亚洲高清| 日本在线成人| 亚洲不卡免费视频| 在线播放你懂得| 超黄网站在线观看| 日本视频一区在线观看| 国产亚洲成av人片在线观黄桃| 日韩脚交footjobhd| 成年人免费网站在线观看| 国产精品77777竹菊影视小说| 日本按摩中出| 99久久久久国产精品免费| 国产精品久久久久影院色老大| 午夜在线视频一区二区区别| 中文字幕在线播出| 三级毛片网站| 国产一级二级av| 成人午夜影院在线观看| 日韩黄色碟片| 国产精品美女久久久久aⅴ国产馆| 美女把尿口扒开给男人桶视频| 国产精品久久AV无码| 国产美女精品人人做人人爽| 亚洲第一页综合| 2020中文字字幕在线不卡| 日韩精品福利在线| 国产精品久久久久久久久久东京| 国产成+人+综合+亚洲欧美丁香花| 成人免费网站观看| 被男同事摸的水好多| 日韩av毛片网| 国产高清精品软男同| 好看的日韩精品视频在线| 又黄又色的网站| 精品国产免费视频| 久久精品国产亚洲精品2020| 四虎精品一区二区永久在线观看| h视频免费高清在线观看| 欧美激情在线一区二区三区| 午夜精品久久久久久久99热| 色婷婷综合视频在线观看| 黄色大片在线看| 精品人妻少妇嫩草av无码专区| 精品麻豆剧传媒av国产九九九| 欧美在线se| 国产精品免费看一区二区三区| 国产精品无圣光一区二区| 精品美女久久| 污视频网站在线免费| 欧美激情极品视频| 中文字幕伦av一区二区邻居| 成人国产精品一区二区| 亚洲图片小说网| 亚洲资源在线网| heyzo视频在线播放| 亚洲视频1区2区| 91精品国产91久久久久久最新| 国产精品无码2021在线观看| 最新av番号| 99久久久国产精品无码免费| 日韩欧美在线视频日韩欧美在线视频| 欧美一级淫片免费视频魅影视频| 免费高清视频在线观看| 香蕉综合视频| av在线天堂| 日韩精品影视| 久久综合偷偷噜噜噜色| 免费影院在线观看一区| 一区二区三区国产精华| 亚洲电影免费观看高清完整版在线观看| www黄com| 日本三级在线播放完整版| 爱爱永久免费视频| 福利一区二区| 视频在线99| 成年人视频观看| 国产精品污www在线观看| 欧美一区午夜视频在线观看| 毛片毛片毛片毛片| 青青青青在线| 欧一区二区三区| 精品视频一二三区| 久久99精品久久久久久三级| 日本啊v在线| 在线一区二区三区精品| 亚洲国产精品无码久久| 四虎视频在线精品免费网址| 国产在线欧美在线| 亚洲精品国精品久久99热一| 欧美这里只有精品| 性感美女激情视频在线观看| 欧美日韩在线视频一区二区| 亚洲国产精品一区二区尤物区| 亚洲精品www久久久久久广东| 无码人妻丰满熟妇区毛片18| 中文字幕第四页| 99久久国产综合精品女不卡| 羞羞影院体验区| 伊人影院综合在线| 欧美肉体xxxx裸体137大胆| 免费99精品国产自在在线| 亚洲欧美日韩第一区| 亚洲成人精品一区二区| 三年片观看免费观看大全视频下载| 99在线精品观看| 婷婷丁香久久| 中文字幕一区二区不卡| 一色屋精品亚洲香蕉网站| 黄色精品视频网站| 亚洲女人天堂色在线7777| 老女人性淫交视频| 天天av天天爱| 怡红院红怡院欧美aⅴ怡春院| 日本福利视频| 亚洲香蕉中文网| 日本丰满少妇一区二区三区| 人成在线视频| 免费看黄裸体一级大秀欧美| 黄色网战在线观看| 亚洲精品社区| 久久久久久久久久久久久久久久久久久| 亚洲国产综合色| 亚洲精品国产高清久久伦理二区| 三级全黄的视频在线观看| 国产对白在线| 激情国产一区| 青青青爽久久午夜综合久久午夜| 蜜桃免费网站一区二区三区| 国产麻豆视频精品| 空姐吹箫视频大全| 91精品在线看| 99久久精品一区二区| 韩国av永久免费| 亚洲精品高清视频在线观看| 日本一区二区久久精品| 欧美日韩高清在线观看| 天海翼一区二区三区四区在线观看| 色一情一乱一伦一区二区三欧美| 亚洲精品久久久久中文字幕二区| 亚洲怡红院在线| 国产成人无码专区| 日本视频免费观看| 巨大黑人极品videos精品| 一本色道久久综合亚洲精品按摩| 在线观看亚洲电影| va亚洲va日韩不卡在线观看| 最近更新的2019中文字幕| 在线观看毛片网站| 伊人伊人伊人久久| 国产精品亚洲一区二区无码| 亚洲天堂男人天堂| 日韩在线精品强乱中文字幕| 久草综合在线观看| 999久久久国产999久久久| 中文字幕视频在线免费观看| 欧美不卡激情三级在线观看| 国产一级黄色片免费| 欧美专区在线视频| 性生交免费视频| 欧美激情videoshd| 亚洲欧美国产三级| 欧美精品久久久久久久久久丰满| 欧美性感一类影片在线播放| 久草精品视频在线观看| 中文字幕一区综合| 91sao在线观看国产| 蜜臀av免费一区二区三区| 亚洲成人av免费在线观看| 一区二区国产精品视频| 热99精品视频| 国产精品热视频| 日韩中文字幕一区二区| 亚洲一区自拍偷拍| 五月天综合婷婷| 国语自产精品视频在线看| 亚洲欧美国产视频| 极品销魂美女一区二区三区| 国产免费视频一区二区三区|