我在用fileupload 组件进行文件上传时..上传代码写在servlet 中
try {
//FileUpload fu=new FileUpload ();
DiskFileUpload fu=new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath); // 得到所有的文件:
List fileItems =fu.parseRequest(request);// fu.parseRequest(request);
Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)i.next();
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
long filesize=fi.getSize();
System.out.println("上传的文件名为!!!"+fileName);
// 在这里可以记录用户和文件信息
// ...
// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
fi.write(new File(uploadPath +fileName));
}
}
catch(Exception ex) {
System.out.println("上传文件时出错!!!");
ex.printStackTrace();
}
出现下面的错误...
<form method="get" action="../saveemailservlet" name="emailform" enctype="multipart/form-data"> 当我表单用GET 方法请求时.出现在下面的异常...
org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:294)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:268)
at com.netoa.web.SaveEmailServlet.UploadFile(SaveEmailServlet.java:143)
at com.netoa.web.SaveEmailServlet.doGet(SaveEmailServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)后来发现文件上传表单必须用 POST方法..改成下面
<form method="POST" action="../saveemailservlet" name="emailform" enctype="multipart/form-
但是出现一个问题...我在servlet 中的doGet()和doPost()方法中得不到请求的参数
request.getParameter("filestate") 这样得到的值全部是null请问高手这是什么原因...怎么解决..
try {
//FileUpload fu=new FileUpload ();
DiskFileUpload fu=new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath); // 得到所有的文件:
List fileItems =fu.parseRequest(request);// fu.parseRequest(request);
Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)i.next();
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
long filesize=fi.getSize();
System.out.println("上传的文件名为!!!"+fileName);
// 在这里可以记录用户和文件信息
// ...
// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
fi.write(new File(uploadPath +fileName));
}
}
catch(Exception ex) {
System.out.println("上传文件时出错!!!");
ex.printStackTrace();
}
出现下面的错误...
<form method="get" action="../saveemailservlet" name="emailform" enctype="multipart/form-data"> 当我表单用GET 方法请求时.出现在下面的异常...
org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:294)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:268)
at com.netoa.web.SaveEmailServlet.UploadFile(SaveEmailServlet.java:143)
at com.netoa.web.SaveEmailServlet.doGet(SaveEmailServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)后来发现文件上传表单必须用 POST方法..改成下面
<form method="POST" action="../saveemailservlet" name="emailform" enctype="multipart/form-
但是出现一个问题...我在servlet 中的doGet()和doPost()方法中得不到请求的参数
request.getParameter("filestate") 这样得到的值全部是null请问高手这是什么原因...怎么解决..
解决方案 »
- java web的jsp利用access数据库怎么取得access auto_increment的字段?
- hibernate 插入大量数据的 效率
- JSP中cookie.getMaxAge()怎么总是得到-1呢?
- mysql查询的一个问题
- 恼人的汉字内码转换的问题 (GBK -> UTF-8)
- JSP 内嵌其他web语言
- ※※※怎样将自己的Web应用设置为Tomcat的默认应用?
- jsp问题
- 关于一个替换字符的问题,恳请高手指教!
- windows xp没有java虚拟机????
- 请大师解决这个的执行结果,急,在线等!以下使用java技术执行后的结果?
- 同时对两个sql语句操作,这样的sql语句操作是不是不行的?在线等。
如果改成POST 但是我又要得到请求参数的值的话..要怎么得到啊?
代码如下:// 定义一个HashMap,存放请求参数
Map parameters = new HashMap();try {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fu = new ServletFileUpload(factory); // 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
factory.setSizeThreshold(4096);
// 设置临时目录:
factory.setRepositoryPath(tempPath); // 得到所有的文件,以及其它请求参数:
List fileItems = fu.parseRequest(request);// fu.parseRequest(request);
Iterator i = fileItems.iterator();
// 依次处理每一个文件,以及请求参数:
while(i.hasNext()) {
FileItem fi = (FileItem)i.next(); // 如果是文件项,则保存文件到上传目录
if (!fi.isFormField()) {
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
long filesize = fi.getSize();
System.out.println("上传的文件名为!!!"+fileName);
// 在这里可以记录用户和文件信息
// ...
// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
fi.write(new File(uploadPath +fileName));
}
else { // if (fi.isFormField()==true): 如果是请求参数,则保存到HashMap中
String name = fi.getFieldName();
String value = fi.getString();
parameters.put(name, value);
}
}
}
catch(Exception ex) {
System.out.println("上传文件时出错!!!");
ex.printStackTrace();
}/* 处理完成后,此时所有请求参数存放在 parameters 变量中
可以通过 (String)parameters.get("xxx") 来读取参数
*/