直接发代码了 这是我一直以来使用的上传代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*,java.io.*" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.json.simple.*" %>
<%
//获取action路径,图片存放路径
//String actionUrl=request.getParameter("actionUrl");
String imageUrl=request.getParameter("folderName");
//System.out.println("文件的目录路径是"+imageUrl);
String resultMsg=null;
//文件保存目录路径
String savePath = pageContext.getServletContext().getRealPath("/") + imageUrl+"/";
String url = this.getClass().getClassLoader().getResource("/")
.toString().replace("WEB-INF/classes/", "").replace("file:/", "");
//System.out.println("文件的目录路径是"+savePath);
//文件保存目录URL
String saveUrl = request.getContextPath() + "/"+imageUrl+"/";
//文件名称
String newFileName="";
//文件大小
long fileSize=0;
//定义允许上传的文件扩展名
String[] fileTypes = new String[]{"gif", "jpg", "jpeg", "png", "bmp","GIF","JPG","JPEG","PNG","BMP"};
//最大文件大小
long maxSize = 1000000;
response.setContentType("text/html; charset=UTF-8");
if(!ServletFileUpload.isMultipartContent(request)){
resultMsg="请选择文件!";
}else{
//检查目录
File uploadDir = new File(savePath);
if(!uploadDir.isDirectory()){
out.println(savePath);
resultMsg="上传目录不存在!";
uploadDir.mkdir();
}else{
if(!uploadDir.canWrite()){
resultMsg="上传目录没有读写权限!";
}else{
//创建文件夹
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(new Date());
savePath += ymd + "/";
saveUrl += ymd + "/";
File dirFile = new File(savePath);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
String fileName = item.getName();
fileSize = item.getSize();
if (!item.isFormField()) {
//检查文件大小
if(item.getSize() > maxSize){
resultMsg="上传文件大小超过限制!";
}else{
//检查扩展名
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
if(!Arrays.<String>asList(fileTypes).contains(fileExt)){
resultMsg="上传文件扩展名是不允许的扩展名!";
}else{
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
try{
File uploadedFile = new File(savePath, newFileName);
item.write(uploadedFile);
}catch(Exception e){
resultMsg="上传文件失败!";
}
}
}
}
}
}
}
}
String uploadUrl=saveUrl+newFileName;
System.out.print(newFileName);
if(uploadUrl.indexOf(".")<0){
uploadUrl="";
}
try {
if(resultMsg!=null){
response.getWriter().print("<script>alert(\""+resultMsg+"\");</script>");
}
String resultStr="{\"id\":\""+1000+"\",\"fileName\":\""+newFileName+"\",\"attachmentPath\":\""+uploadUrl+"\",\"attachmentSize\":\""+fileSize+"\"}";
response.getWriter().print(resultStr);
} catch (IOException e) {
e.printStackTrace();
}
%>
由于配合使用了dwz框架 要求数据格式是json格式 所以里面的一些提示信息改成这样 但是应该不影响试用 只要稍微调整一下就好