JavaWeb文件上传

来源:互联网 发布:骁龙410处理器网络 编辑:程序博客网 时间:2024/05/16 17:17
JSP页面核心
上传form
<form action="${pageContext.request.contextPath }/UPservlet" method="post"  enctype="multipart/form-data">
<input type="text" name="username"><br>
<input type="file" name="filename"><br>
<input type="submit"value="提交">

</form>

---------------------------------------------

上传servlet

package servlet;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;


@WebServlet("/UPservlet")
public class UPservlet extends HttpServlet {
private static final long serialVersionUID = -2720130016330364753L;


protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}


protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");//设置请求代码
response.setContentType("text/html;charset=UTF-8");//设置响应代码
//构造工厂
//DiskFileItemFactory factory=new DiskFileItemFactory();
//设置文件大小
DiskFileItemFactory factory=new DiskFileItemFactory(1024*1024*10,new File("I://temp"));
//解析器
ServletFileUpload upload=new ServletFileUpload(factory);
//限制整个表单大小
//upload.setSizeMax(1024*1024);
//限制单个文件大小
//upload.setFileSizeMax(1024*1024);
//解析
//存档解析结果
StringBuffer sb=new StringBuffer();
InputStream inputStream=null;
String filename=null;
String fileType=null;
long filesize=0;
FileItem fitem=null;
try {
@SuppressWarnings("unchecked")
List<FileItem> items=upload.parseRequest(request);
for (FileItem item : items) {
if(item.isFormField()){
sb.append("属性名:"+item.getFieldName()).append("\r\n ");
sb.append("属性值:" +item.getString()).append("\r\n ");
sb.append("-------------");
}
else {
fitem=item;
filesize=item.getSize();
sb.append("文件大小:").append(filesize).append("\r\n ");
fileType= item.getContentType();
sb.append("文件类型:").append(fileType).append("\r\n ");
filename=item.getName();
sb.append("文件名称:").append(filename).append("\r\n ");
inputStream=item.getInputStream();
}
}
System.out.println(sb.toString());
} catch (FileUploadException e) {
if(e instanceof FileUploadBase.FileSizeLimitExceededException){
request.setAttribute("msg", "上传文件超过1M");
}
e.printStackTrace();
}
//得到文件保存路径
String root=this.getServletContext().getRealPath("/WEB-INF/files");
if(filename.lastIndexOf(File.separator)!=-1){
filename=filename.substring(filename.lastIndexOf(File.separator)+1);
}
int nameHash=filename.hashCode();
String hex=Integer.toHexString(nameHash);
File saveFile=new File(root, hex.charAt(0)+File.separator+hex.charAt(1));
if(!saveFile.exists()){
saveFile.mkdirs();
}
File destFile=new File(saveFile,filename);
//保存
try {
fitem.write(destFile);
} catch (Exception e) {
e.printStackTrace();
}
}


}

0 0
原创粉丝点击