概要:
在Java中,利用ajaxfileupload.js+commons-fileupload-1.3.1.jar 實現文件上傳功能。
關鍵字:
Java,上傳,ajaxfileupload,fileupload
內容:
進行Web方面的開發時,文件上傳是經常會使用到的,所以如果能有一個簡單、實用、性能良好的上傳組件,我想是極好的,那麼ajaxfileupload.js應該是個不錯的選擇,下面我就分享一次我的使用經驗。
這次文件上傳的整個過程主要有一個Jsp文件、一個Java文件、一個Js文件組成,首先我們來看一下Jsp頁面的代碼:
文件1:upload.jsp
是的,你沒有看錯,jsp頁面就只要這兩行代碼,接下來是js文件的代碼。
文件2:upload.js
var basePath = null;
$(function() {
basePath = $("#basePath").attr("value");
$("#scbtn").click(function() {
ajaxFileUpload();
});
});
// 文件上傳
function ajaxFileUpload() {
$.ajaxFileUpload({
url : basePath + "upload.ajax",// 用於文件上傳的服務器端請求地址
secureuri : false,// 一般設置為false
fileElementId : 'attachfiles',// 文件上傳控件的id屬性
dataType : 'json',// 返回值類型 一般設置為json
enctype : "multipart/form-data",
success : function(data, status) // 服務器成功響應處理函數
{
},
error : function(data, status, e) {
}
});
return false;
}
Js部分的代碼主要是利用jQuery中發送ajax請求,訪問後台的代碼,那麼接下來自然就是Java代碼,你準備好了嗎?
文件3:UploadAjaxManager.java
package org.4spaces.demo;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
*
* @author :https://www.4spaces.org
*
*/
public class UploadAjaxManager extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String uri = request.getRequestURI();
int startIndex = uri.lastIndexOf("/") + 1;
int endIndex = uri.lastIndexOf(".");
String action = uri.substring(startIndex, endIndex);
if (action.equals("upload")) {
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac);
upload.setHeaderEncoding("UTF-8");
List fileList = new ArrayList();
try {
fileList = upload.parseRequest(request);
} catch (FileUploadException ex) {
ex.printStackTrace();
}
String targetPath = request.getSession().getServletContext()
.getRealPath("jsp/upload")
+ "/";
String fileName = "blank.doc";
for (FileItem item : fileList) {
if (!item.isFormField()) {
fileName = item.getName();
File saveFile = new File(targetPath + fileName);
try {
item.write(saveFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
當然,上面的代碼一定不要忘記導包: commons-fileupload-1.3.1.jar和commons-io-2.4.jar.
好了,有了上面的代碼,你就可以輕鬆的實現上傳文件了。
PS:
奉上完整的工程和代碼的地址:工程源代碼 ;
參考文章:https://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html ;