由於一般上傳的按鈕在跳出視窗選擇檔案時只能拉取一檔案做上傳,而在這邊要探討的是如
何利用ExtJS搭配HTML5語法及相關的後端程式來做處理,達到可以一次選取多個檔案做上
傳的目的。
首先一樣先載入相關的JS Library
ext-all.js
adapter/ext/ext-base.js
resources/css/ext-all.css
HTML部分
建立一div區塊,到時會定義一ExtJS Container與它做綁定
ExtJS部分
Container內另外定義一textfield其type為file及一button,並且針對file多加一屬性multiple。
而multiple屬性以IE來講需要10才有支援,屬於HTML5新加的屬性
http://www.w3schools.com/tags/att_input_multiple.asp
JSP部分
與之前這篇文章一樣,後端改寫一下需針對實際的檔案數目來做各別save的動作,搭配
smartupload library省事很多!
DEMO
何利用ExtJS搭配HTML5語法及相關的後端程式來做處理,達到可以一次選取多個檔案做上
傳的目的。
首先一樣先載入相關的JS Library
ext-all.js
adapter/ext/ext-base.js
resources/css/ext-all.css
HTML部分
<form id="myform" name="myform" method="post" enctype="multipart/form-data">
<div id="content"></div>
</form>
建立一div區塊,到時會定義一ExtJS Container與它做綁定
ExtJS部分
Ext.onReady(function(){
Ext.QuickTips.init();
var container = new Ext.Container({
width: 300,
layout: 'column',
items:[
{
xtype: 'textfield',
inputType: 'file',
fieldLabel: 'Multiple file selection',
autoCreate: {
tag: 'input',
type: 'text',
size: '20',
autocomplete: 'off',
multiple: 'multiple'
}
},
{
xtype: 'button',
text:'確認',
id:'doForm',
listeners: {
click: function() {
Ext.Ajax.request({
url: 'more-files-upload.jsp',
form: myform,
method: 'POST',
success: function ( result, request) {
var json_t = Ext.util.JSON.decode(result.responseText);
Ext.Msg.alert('Success', json_t.info);
},
failure: function ( result, request) {
Ext.Msg.show({
title : '訊息',
msg : '上傳失敗!!',
buttons: Ext.Msg.OK,
closable:false,
icon : Ext.Msg.ERROR
});
}
});
}
}
}
],
style: 'margin:20px'
});
container.render('content');
});
Container內另外定義一textfield其type為file及一button,並且針對file多加一屬性multiple。
而multiple屬性以IE來講需要10才有支援,屬於HTML5新加的屬性
http://www.w3schools.com/tags/att_input_multiple.asp
JSP部分
與之前這篇文章一樣,後端改寫一下需針對實際的檔案數目來做各別save的動作,搭配
smartupload library省事很多!
try{
response.setHeader("Cache-Control", "no-cache");
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
su.setAllowedFilesList("txt");
su.upload();
for(int i = 0 ; i < su.getFiles().getCount() ; i++){
com.jspsmart.upload.File file = su.getFiles().getFile(i);
System.out.println(">>>>>>file name:" + file.getFileName());
file.saveAs("uploadFileTest_"+i+".txt", su.SAVE_PHYSICAL);
}
JSONObject json = new JSONObject();
json.put("success", true);
json.put("info", "upload success!");
response.getWriter().print(json.toString());
response.getWriter().flush();
}catch(Exception e){
e.printStackTrace();
response.getWriter().print(e.getMessage());
}finally {
try {
response.getWriter().close();
} catch (IOException e) {
e.printStackTrace();
}
}
DEMO
留言
張貼留言