parseRequest(request)的使用

使用commons-fileupload上传文件。因为表单中除了file控件还有两个和idden。所以在后台使用要两次使用parseRequest(request)。代码... 使用commons-fileupload上传文件。因为表单中除了file控件还有两个和idden。所以在后台使用要两次使用parseRequest(request)。
代码如下:
DiskFileUpload dfu =new DiskFileUpload();
List list = dfu.parseRequest(request);
Iterator iterator = list.iterator();
开始遍历iterator

第一次使用可以得到iterator 里面的每一个值,但是第二次想专程读File的时候,iterator.next() == false;
不知道是什么原因。

如果有什么办法可以绕开的话,也请说明。
好的答案会加分的。
写错了,是iterator.hasnext() == false
另外,那段代码是写在不同的方法里面的。都是靠request来传参数的。

就是要遍历两次。
否则一旦观察到file里面放了东西就上传的话,服务器受不了啊
展开
 我来答
百度网友0c3258b02
推荐于2016-03-10 · TA获得超过672个赞
知道小有建树答主
回答量:550
采纳率:0%
帮助的人:626万
展开全部
String location = "";
String descn = "";
String upload = "";
String parent = "";
String fileName = "";
String WEBUPLOADPATH = "";
try{

DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
ServletFileUpload upload1 = new ServletFileUpload(factory);
upload1.setFileSizeMax(5242880);
List items = upload1.parseRequest(request);
Iterator it = items.iterator();
ResourceBundle rb = ResourceBundle.getBundle("applicationresources");
String WEBAPPREALPATH = rb.getString("WEBAPPREALPATH");
WEBUPLOADPATH = rb.getString("WEBUPLOADPATH");
File fileTemp = new File(WEBAPPREALPATH+WEBUPLOADPATH);
try{
if(!fileTemp.exists()){
fileTemp.mkdirs();
}
}catch(Exception e){
e.printStackTrace();
return 1;
}
while(it.hasNext()){
FileItem item = (FileItem) it.next();
if(item.isFormField()){
if(item.getFieldName().equals("location")){
location = item.getString();
}else{
descn = item.getString();
}
}else{
upload = item.getName();
String fileType = upload.substring(upload.lastIndexOf(".")+1,upload.length()).toLowerCase();
if((!fileType.equals("bmp"))&&(!fileType.equals("jpg"))&&(!fileType.equals("jpeg"))&&(!fileType.equals("gif"))&&(!fileType.equals("png"))){
return 2;
}
String str[] = { "a", "b", "c", "d", "e", "f", "g",
"h", "i", "j" };
Random tmp = new Random();
fileName = System.currentTimeMillis()
+ str[tmp.nextInt(10)] + "." + fileType;
item.write(new File(WEBAPPREALPATH+WEBUPLOADPATH+"/"+fileName));
}
}
parent = WEBAPPREALPATH+WEBUPLOADPATH;
}catch(Exception e){
e.printStackTrace();return 5;
}
用item.isFormField()来判断
遍历一次就OK了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企... 点击进入详情页
本回答由Storm代理提供
braod
2009-12-24
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
不知道你这是什么,看样子好难呀,不过路过顶一下,不懂编程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式