今天看到不錯的一段代碼,做上傳的,當選擇檔案後,自動出現一個旋轉的表徵圖(當然可以換成文字),上傳用AJAX完成的,上傳後出現另外的表徵圖,
下面代碼筆記之
首先是前台,要引入jquery和ajaxupload.js兩個JS
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/ajaxupload.3.5.js"></script>
<script type="text/javascript">
var uploadIndex = 1;
$(function() {
uploadIt();
deleteFile();
});
function uploadIt() {
$(".uploadAndNext").click(function() {
var uploadId = "#" + $(this).attr("id");
var btn = $(this);
new AjaxUpload( uploadId + "" , {
action : "UploadServlet" ,
onChange: function(file, extension){
$(uploadId + "").parent().find("input")[0].value = file;
$(uploadId + "").parent().find(".uploadAndOkImg").show().attr("src" , "images/spinner.gif");
btn.attr("disabled" , "disabled");
},
onComplete: function(file, response) {
$(uploadId + "").parent().find(".uploadAndOkImg").attr("src" , "images/ok.gif");
$(uploadId + "").parent().find(".deleteImg").attr("src" , "images/delete.gif").show();
uploadIndex++;
$("#uploaddiv").append("<div><input type='text' /><button class='uploadAndNext' id='upload" + uploadIndex + "'>瀏覽</button><img src='' width='20px' height='20px' class='uploadAndOkImg' style='display:none'/><img src='' width='20px' height='20px' class='deleteImg' style='display:none' alt='刪除'/></div>");
uploadIt();
deleteFile();
}
});
});
}
function deleteFile() {
$("#uploaddiv .deleteImg").click(function() {
var fileName = $(this).parent().find("input").val();
var thisObj = $(this);
$.post("DeleteServlet" , {
"fileName" : fileName
},
function(data) {
thisObj.parent().remove();
}
);
});
}
</script>
</head>
<body>
<div id="uploaddiv">
<div><input type="text" /><button class="uploadAndNext" id="upload1">瀏覽</button><img src="" width="20px" height="20px" class="uploadAndOkImg" style="display: none"/><img src="" width="20px" height="20px" class="deleteImg" style="display:none;" alt="刪除"/></div>
</div>
</body>
然後通過servlet去處理,就是調用那個commons.fileupload組件了
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> list = upload.parseRequest(request);
for (int i = 0; i < list.size(); i++) {
FileItem fileItem = list.get(i);
String name = fileItem.getName().substring(fileItem.getName().lastIndexOf("\\") + 1);
request.getSession().setAttribute(name, true);
fileItem.write(new File("d:/" + name));
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}