引言:之前在做多文件上傳的時候,在網上找了些插件,可以實現一次性上傳多個文件,但是放到Struts2裏面去的時候就有問題了,所以就乾脆使用了Struts2的文件上傳了,雖然需要多次選擇文件,但好歹也是能一次性上傳的。下面來看看我的實現方法,以此拋磚引玉...
先來看看jsp需要的代碼:
window.οnlοad=function(){
//文件上傳添加按鈕
$("#addUpload").click(function(){
var fileDiv = $(".fileDiv").clone();
fileDiv.removeClass(); //去掉class="fileDiv" 如果不這麼做,那麼會出現多個class="fileDiv" 這樣再次clone的時候也就會clone出多個,以等比數列增加
$("#fileTr").append(fileDiv);
fileDiv.show();
})
//刪除文件
$(".delUpload").live("click",function(){
$(this).closest("DIV").remove();
})
}
<tr>
<td align="left" width=5%>
導入結果 :
</td>
<td align="left" width=5%>
<span id="addUpload"
style="border: gray 1px solid; padding: 5px 15px; background-color: #BABABA; color: #000fff;">增加</span>
</td>
<td id="fileTr" align="left" width=15% nowrap>
<div class="fileDiv"
style="font-size: 12px; padding: 5px; display: none;">
路徑: <input type="file" name="resultFile"
style="background-color: #fff; border: solid 1px #77abc4; color: #000000; width: 270px;" />
<span class="delUpload"
style="border: gray 1px solid; padding: 5px 15px; background-color: #BABABA; color: #000fff;">刪除</span>
</div>
</td>
</tr>
效果圖如下:
點擊刪除後:
後臺代碼:
private List<File> resultFile;//和jsp中 name="resultFile" 這塊的name名字對應
private List<String> resultFileFileName;
//對上傳的文件list通過循環獲取,然後進行自己想要的操作
for (int i = 0; i < resultFile.size(); i++) {
String fileReName = uploadFile(resultFile.get(i),resultFileFileName.get(i));
}
代碼比較粗糙,重在意會,各位如果有比較好的推薦還望不吝賜教,感激不盡!!!