为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件

为什么我用commons-fileuploa组件来实现上传文件但是一直抛异常说没有文件

import java.io.File;
import java.util.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;

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.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;



@SuppressWarnings("serial")
public class UploadServlet extends HttpServlet{

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletExceptionIOException {
doPost(req, resp);
}

@SuppressWarnings({ "deprecation", "unchecked" })
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
final long MAX_SIZE = 10*1024*1024; //设置上传文件最大为10M
final String[] allowedExt = new String[]{"jpg","jpeg","gif","txt","doc","docx","mp3","wma","w4a","bmp","JPG"};
resp.setContentType("text/html");
//设置字符编码为UTF-8,这样支持汉字显示
resp.setCharacterEncoding("UTF-8");
//实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
DiskFileItemFactory dfif = new DiskFileItemFactory();
//设置上传文件时用于临时存放文件的内存大小,这里是4K,多余部分将临时存在硬盘
dfif.setSizeThreshold(4096);
//设置存放临时文件的目录,web根目录下的ImagesUploadTemp
dfif.setRepository(new File(req.getRealPath("/")+"ImagesUploadTemp"));
//用以上工厂实例化上传组件
ServletFileUpload sfu = new ServletFileUpload(dfif);
//设置最大上传尺寸
sfu.setSizeMax(MAX_SIZE);
PrintWriter out = resp.getWriter();
//从req得到所有上传域的列表
List fileList = null;
try {
fileList = sfu.parseRequest(req);
}catch(FileUploadException e) { //处理文件尺寸过大异常
if(e instanceof SizeLimitExceededException) {
out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节</p>");
out.println("<a href=\"\\chap11\\fileupload.jsp\" target=\"_top\">返回</a>");
return;
}
//没有文件上传
if(fileList == null || fileList.size() == 0) {
out.println("请选择上传文件1</p>");
out.println("<a href=\"\\chap11\\fileupload.jsp\" target=\"_top\">返回</a>");
return;
}
//得到所有上传的文件
Iterator fileltr = fileList.iterator();
//循环处理所有文件
while(fileltr.hasNext()) {
FileItem fileitem = null;
String path = null;
long size = 0;
//得到当前文件
fileitem = (FileItem)fileltr.next();
//忽略简单form字段而不是上传域的文件域(<input type="text" />等)
if(fileitem == null || fileitem.isFormField()) {
continue;
}
//得到文件的完整路径
path = fileitem.getName();
size = fileitem.getSize();
if("".equals(path) || size == 0) {
out.println("请选择上传文件2</p>");
out.println("<a href=\"\\chap11\\fileupload.jsp\" target=\"_top\">返回</a>");
return;
}
//得到去除路径的文件名
String t_name = path.substring(path.lastIndexOf("\\")+1);
//得到文件的扩展名
String t_ext = t_name.substring(t_name.lastIndexOf(".")+1);
//拒绝接受规定文件格式之外的文件类型
int allowFlag = 0;
int allowedExtCount = allowedExt.length;
for(;allowFlag < allowedExtCount;allowFlag++) {
if(allowedExt[allowFlag].equals(t_ext)) {
break;
}
}
if(allowFlag == allowedExtCount) {
out.println("请上传以下类型的文件</p>");
for(allowFlag = 0; allowFlag < allowedExtCount ; allowFlag++) {
out.println("*." + allowedExt[allowFlag] + "&nbsp;&nbsp;&nbsp;");
}
out.println("<a href=\"\\chap11\\fileupload.jsp\" target=\"_top\">返回</a>");
return;
}
//保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下
String u_name = req.getRealPath("/")+"upload/" + t_name;
try {
//保存文件
fileitem.write(new File(u_name));
out.println("文件上传成功.已保存为:" + t_name + "&nbsp;&nbsp;文件大小" + size +
"字节<p/>");
out.println("<a href=\"\\chap11\\fileupload.jsp\" target=\"_top\">继续上传</a>");
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}

}

}



文章评论

为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
看13位CEO、创始人和高管如何提高工作效率
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
10个帮程序员减压放松的网站
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
什么才是优秀的用户界面设计
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
鲜为人知的编程真相
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
Web开发者需具备的8个好习惯
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
程序猿的崛起——Growth Hacker
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
5款最佳正则表达式编辑调试器
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
程序员和编码员之间的区别
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
如何区分一个程序员是“老手“还是“新手“?
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
当下全球最炙手可热的八位少年创业者
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
代码女神横空出世
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
做程序猿的老婆应该注意的一些事情
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
程序员都该阅读的书
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
中美印日四国程序员比较
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
“肮脏的”IT工作排行榜
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
我的丈夫是个程序员
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
聊聊HTTPS和SSL/TLS协议
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
十大编程算法助程序员走上高手之路
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
要嫁就嫁程序猿—钱多话少死的早
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
我跳槽是因为他们的显示器更大
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
科技史上最臭名昭著的13大罪犯
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
程序员的鄙视链
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
团队中“技术大拿”并非越多越好
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
为啥Android手机总会越用越慢?
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
程序员的一天:一寸光阴一寸金
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
我是如何打败拖延症的
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
“懒”出效率是程序员的美德
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
不懂技术不要对懂技术的人说这很容易实现
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
Web开发人员为什么越来越懒了?
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
初级 vs 高级开发者 哪个性价比更高?
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
老美怎么看待阿里赴美上市
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
如何成为一名黑客
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
程序员必看的十大电影
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
Java程序员必看电影
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
Java 与 .NET 的平台发展之争
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
每天工作4小时的程序员
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
编程语言是女人
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
旅行,写作,编程
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
程序员最害怕的5件事 你中招了吗?
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
60个开发者不容错过的免费资源库
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
10个调试和排错的小建议
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
程序员应该关注的一些事儿
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
程序员眼里IE浏览器是什么样的
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
总结2014中国互联网十大段子
为什么小弟我用commons-fileuploa组件来实现上传文件但是一直抛错误说没有文件
程序员的样子