站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题为什么上传文件,解析request得到是空的

为什么上传文件,解析request得到是空的

摘要: 为什么上传文件,解析request得到是空的


大家帮我看看 冗余的代码就不贴了

UploadJsp.jsp:

<form action="UploadServlet" method="post" enctype="multipart/form-data">
<input type="file"><input type="text"><input type="submit" value="submit">
</form>


UploadServlet.java:


public class UploadServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

// Check that we have a file upload request
boolean isMultipart = FileUploadBase.isMultipartContent(request);
PrintWriter pw = response.getWriter();
pw.println(isMultipart);

// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();

// Set factory constraints

factory.setSizeThreshold(1024);
File file = new File("e://temp");

factory.setRepository(file);

// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Set overall request size constraint
upload.setSizeMax(1024*1024);

try{
pw.println("parsing...");
// Parse the request
List items = upload.parseRequest(request);
//问题点==================================================
//items里面是空的 (上传的时候有选文件)
//========================================================
pw.println("parse over");


Iterator iter = items.iterator();
pw.println(iter.hasNext());
while(iter.hasNext()){
FileItem item = (FileItem)iter.next();

// Process a regular form field
if(item.isFormField ()){
String name = item.getFieldName();
String value = item.getString();
}else{
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
pw.println(fieldName);
pw.println(fileName);
pw.println(contentType);
pw.println(isInMemory);
pw.println(sizeInBytes);

}
}
}catch(FileUploadException e){
e.printStackTrace();
}catch(Exception ex){
ex.printStackTrace();
}
}
}



你应该在<input>里加上name属性.


修改后出现异常:
exception

javax.servlet.ServletException: Servlet execution threw an exception


root cause

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:179)
org.apache.commons.fileupload.FileUploadBase.createItem(FileUploadBase.java:500)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:116)
ServletTest.UploadServlet.doPost(UploadServlet.java:59)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

不太明白是什么问题,望赐教


NoClassDefFoundError: 缺少jar文件,去下一个apache commons-io


删了再做


删了再做


commons-io导了 1.2版本的


重装完系统后 好了 ~


↑返回目录
前一篇: 批量修改问题 100分在线等待
后一篇: BLOG小系统,请各位前辈请来指导~顶者有分