设置表单的提交方式为 "post",并且,还要设置 "enctype=multipart/form-data"。
import java.io.IOException;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Hashtable;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.alibaba.fastjson.JSON;
public class ReceiveFileSeverlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
// 解析参数
String jsonStr = "";
// String checkResult = checkKey("api_key_mobile", request.getParameter("key"));
// if (!"".equals(checkResult)) {
//
// response.setCharacterEncoding("UTF-8");
// response.getWriter().print(checkResult);
// return;
// }
Hashtable<String, String> formDatas = new Hashtable<String, String>();
List<File> uploadFiles = new ArrayList<File>();
try {
String str1 = AppConfig.getInstance().getApplicationRoot() + File.separator + "upload" + File.separator;
DiskFileItemFactory localDiskFileItemFactory = new DiskFileItemFactory();
localDiskFileItemFactory.setRepository(new File(str1 + "tmp"));
localDiskFileItemFactory.setSizeThreshold(4194304);
ServletFileUpload localServletFileUpload = new ServletFileUpload(localDiskFileItemFactory);
localServletFileUpload.setHeaderEncoding("UTF-8");
List<FileItem> localList = localServletFileUpload.parseRequest(request);
for (int i = 0; i < localList.size(); i++) {
FileItem localFileItem = localList.get(i);
if (!localFileItem.isFormField()) {
if ("".equals(localFileItem.getName())) {
continue;
}
// File localFile = new File(str1 + getNewFileName(localFileItem.getName()));
File localFile = new File(str1 + localFileItem.getName());
localFileItem.write(localFile);
String str2 = localFileItem.getName();
if ((str2.toLowerCase().endsWith(".jsp")) || (str2.toLowerCase().endsWith(".bat")) || (str2.toLowerCase().endsWith(".exe"))) {
localFile.delete();
} else {
uploadFiles.add(localFile);
}
} else {
formDatas.put(localFileItem.getFieldName(), localFileItem.getString("UTF-8").trim());
}
}
} catch (Exception e) {
AppLogger.getInstance().errorLog("上传文件出错", e);
}
// Iterator localIterator = request.getParameterMap().keySet().iterator();
// while (localIterator.hasNext())
// {
// String str1 = localIterator.next().toString();
// String str2 = request.getParameter(str1);
// if (str2 == null) {
// continue;
// }
// formDatas.put(str1, str2.trim());
// }
Connection con = null;
try {
con = DBConnectionPool.getInstance().getConnection();
con.setAutoCommit(false);
// 处理文件
jsonStr = uploadFile(con, uploadFiles);
con.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (con != null)
try {
con.rollback();
con.close();
} catch (Exception localException3) {
}
}
response.setCharacterEncoding("UTF-8");
response.getWriter().print(jsonStr);
}
private String uploadFile(Connection con, List<File> uploadFiles) throws Exception {
Hashtable<String, String> jsonHash = new Hashtable<String, String>();
File file = uploadFiles.get(0);
String imageDir = Constants.UPLOAD_REAL_PATH + File.separator + "serviceReport" + File.separator;
if (file.exists()) {
file.renameTo(new File(imageDir + File.separator + file.getName()));
jsonHash.put("status", "1"); // 成功
}
return JSON.toJSONString(jsonHash);
}
/**
* 重新命名图片
* @param paramString
* @return
* @throws Exception
*/
// private String getNewFileName(String paramString) throws Exception {
// int i = paramString.lastIndexOf('.');
// String str = StringUtil.getRandomString(10);
// return str + DateTimeUtil.getCurrentDateTime().replaceAll("-", "").replaceAll(":", "").replaceAll(" ", "") + paramString.substring(i);
// }
// private String checkKey(String configKey, String key) {
// Hashtable<String, String> jsonHash = new Hashtable<String, String>();
// // 判断来源 是否合法
// String tempKey = key;
// if (!tempKey.equals(AppConfig.getInstance().getParameterConfig().getParameter(configKey))) {
// jsonHash.put("result", "-1"); // 非法请求
// jsonHash.put("data", "非法请求");
// return JSON.toJSONString(jsonHash);
// }
// return "";
// }
}