package demo.file.upfileDemo;import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UpfileDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
boolean isMultipart =ServletFileUpload.isMultipartContent(request);
if(!isMultipart){
response.sendError(500,"找不到文件");
return;
}
//构造文件上传对象
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//解析请求
try {
List<FileItem> list = upload.parseRequest(request);
//表单控件的名和值
for(FileItem item:list){
if(item.isFormField()){
String name=item.getFieldName();
String value=item.getString("GBK");
System.out.println("name:"+name);
System.out.println("value:"+value);
}
else{
//文件上传
//文件名
String fileName = item.getName();
//文件大小
long size = item.getSize();
System.out.println("文件名:"+fileName);
System.out.println("文件大小:"+size);
//构造目录路径
String path = this.getServletContext().getRealPath("/file");
if(fileName.contains("\\")){
fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
}
System.out.println("文件名是:"+fileName);
String str = fileName.substring(fileName.lastIndexOf("."));
String time = System.currentTimeMillis()+"";
//fil.renameTo(new File(time+str));
//File fil= new File(path,filename);
File fil= new File(path,fileName);
item.write(fil);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("文件上传成功!");
//String path= this.getServletContext().getRealPath("/file");
//File src = new File(path);
//String[] fileName = src.list();
//request.setAttribute("file", fileName);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}}
为什么只有
name:name
value:sss
name:password
value:sss
而else内的上传文件部分却没执行
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UpfileDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
boolean isMultipart =ServletFileUpload.isMultipartContent(request);
if(!isMultipart){
response.sendError(500,"找不到文件");
return;
}
//构造文件上传对象
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//解析请求
try {
List<FileItem> list = upload.parseRequest(request);
//表单控件的名和值
for(FileItem item:list){
if(item.isFormField()){
String name=item.getFieldName();
String value=item.getString("GBK");
System.out.println("name:"+name);
System.out.println("value:"+value);
}
else{
//文件上传
//文件名
String fileName = item.getName();
//文件大小
long size = item.getSize();
System.out.println("文件名:"+fileName);
System.out.println("文件大小:"+size);
//构造目录路径
String path = this.getServletContext().getRealPath("/file");
if(fileName.contains("\\")){
fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
}
System.out.println("文件名是:"+fileName);
String str = fileName.substring(fileName.lastIndexOf("."));
String time = System.currentTimeMillis()+"";
//fil.renameTo(new File(time+str));
//File fil= new File(path,filename);
File fil= new File(path,fileName);
item.write(fil);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("文件上传成功!");
//String path= this.getServletContext().getRealPath("/file");
//File src = new File(path);
//String[] fileName = src.list();
//request.setAttribute("file", fileName);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}}
为什么只有
name:name
value:sss
name:password
value:sss
而else内的上传文件部分却没执行
解决方案 »
- tomcat6的项目重新在tomcat7下部署,为什么首次访问正常,刷新一下就乱码页面了
- 为什么同事拷贝给我的web项目import到Myeclipse以后项目名上面有一个黑色的“米”型错误?
- 收集一下,面高级软件工程师的题目
- 请教一个Hibernate的NoInitialContextException问题
- hibernate和jdk版本问题
- 一个关于上传的问题
- Struts结构如何对页面的数组进行校验?
- ********** JBX 里面配置 Web Logic ,对 domian 不懂 *********
- jspsmartupload+weblogic 在线!
- 用dom在内存生成xml,怎么设置encoding?
- struts2表单提交问题
- 求教:关于hibernate映射的问题
System.out.println("name:"+name);
System.out.println("value:"+value);}
else{
//文件上传
//文件名
//文件名
String fileName = item.getName();
你这里的item在哪里定义的?
居然能编译通过,佩服啦
这里
//表单控件的名和值
for(FileItem item:list){
比如说 输入0就输出男 else输出女你在外面输入一个0进去 难道又输出男 又输出女啊
String name=item.getFieldName();
String value=item.getString("GBK");
System.out.println("name:"+name);
System.out.println("value:"+value);}
程序执行了IF所以就得到下面:
name:name
value:sss
name:password
value:sss 既然是这样,ELSE后面的代码可能不执行啦
这是是上传文件需要用到的属性,写在form表单中
if(item.isFormField()) 这个地方是判断是不是表单控件的
估计你的可能没有写 上传文件控件 file,没有可上传的东西