org.apache.commons.fileupload 应用时FORM 怎么提得非文件的值?

gggggame 2004-12-04 07:36:14
最近在写一个大文件上传的东西选来选去 用上了org.apache.commons.fileuplad包,现在遇到一个问题请过来人指点一二 ,当一个FORM中有文件 ,文本的时候,我想得到FORM提交上来的非文件时应该怎么取得啊? 一般在commons.fileupload里我们用if (fileItem.isFormField())判断提示上来的FORM里是不是有FILE的东西 但我要怎么才能得到非文件的东西啊
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
YLLi2008 2004-12-29
  • 打赏
  • 举报
回复
String field = "";
Iterator iter = fileItems.iterator();
while (iter.hasNext())
{
FileItem item = (FileItem) iter.next();

if (item.isFormField())
{
if (item.getFieldName().equals("field"))
{
field = item.getString("GBK");
}
}
else
{
String name = item.getName();
long size = item.getSize();
if((name==null || name.equals("")) && size==0)
{
continue;
}
Pattern p = Pattern.compile(".+\\\\(.+)$");
Matcher m = p.matcher(name);
if(m.find())
{
//获取文件名(包括扩展名)
name = m.group(1);

//检查文件类型
if (!m.group(1).toLowerCase().endsWith("jpg"))
{
%>
<script>alert("请上传jpg图片!");history.back();</script>
<%
return;
}

}
//保存上传的文件到指定的目录
try
{
item.write(new File(path + "upload_test/" + name));
}
catch(Exception e)
{
out.println(e);
}
}
}
gggggame 2004-12-08
  • 打赏
  • 举报
回复
还可以啊 有些用啊 做完这项目自己再用struts.upload试试吧 form还分得清是文件还是非文件了 上面说的也对 还有没有人发言啊 怎么一问点问题真的很少就有回贴的啊 CSDN真的不如以前了
YYSAM 2004-12-05
  • 打赏
  • 举报
回复
不明白,如果你不是要上传文件的话,那form里面的映射类型就不能是FormFile类性的了。处理就麻烦一些了,因为struts标签将上传的那个字符串当作文件处理的路径。如果你要是上传文件的话,可以看看struts自带的例子,struts-upload.war。希望对你有所帮助。
gggggame 2004-12-04
  • 打赏
  • 举报
回复
FileItem fi = (FileItem) it.next();
if (!fi.isFormField()) {//忽略file类型以外的form类型元素(诸如text)
//是html的file元素,这里处理
}
else {//html页面除file之外的其它元素,在这里处理
String fieldName = fi.getFieldName();
System.out.println("The form field name is :" + fieldName);
if (fieldName != null && fieldName.trim().equals("fileDec")) {
String fileDec = fi.getString();//通过getString得到元素的value值
}


查了下贴子 上面的写法对吧?
第1个上传组件commons-fileupload =============commons-fileupload ================ common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载。该组件简单易用,可实现一次上传一个或多个文件,并可限制文件大小。 -下载后解压zip包,将commons-fileupload-1.1.1.jar,和commons-io-1.2.jar(这里我们用的是更新的版本,但是用法是一样的)复制到tomcat的webapps\你的webapp\WEB-INF\lib\下,如果目录不存在请自建目录。 新建一个servlet: FileUpload.java用于文件上传: package com.drp.util.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.*; import java.util.*; import java.util.regex.*; import java.io.*; import org.apache.commons.fileupload.servlet.*; import org.apache.commons.fileupload.disk.DiskFileItemFactory; public class FileUpload extends HttpServlet { private String uploadPath = ""; // 用于存放上传文件的目录 private File tempPath = new File("D:\\Tomcat 5.5\\webapps\\drp1.2\\tempimages\\"); // 用于存放临文件的目录 public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html; charset=GB18030"); PrintWriter out = res.getWriter(); System.out.println(req.getContentLength()); System.out.println(req.getContentType()); DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory //允许设置内存中存储数据的门限,单位:字节 factory.setSizeThreshold(4096); // the location for saving data that is larger than getSizeThreshold() //如果文件大小大于SizeThreshold,则保存到临目录 factory.setRepository(new File("D:\\Tomcat 5.5\\webapps\\drp1.2\\tempimages")); ServletFileUpload upload = new ServletFileUpload(factory); // maximum size before a FileUploadException will be thrown //最大上传文件,单位:字节 upload.setSizeMax(1000000); try { List fileItems = upload.parseRequest(req); // assume we know there are two files. The first file is a small //

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧