JavaWeb中的文件上传注意事项:
1、也是最容易忽略的一点:把JSP页面的<form>添加ENCTYPE="multipart/form-data"
2、加入第三方文件上传的API到项目中,在这里使用apache的jakarta项目的commons-*包里的API
3、文件上传步骤:
1)、首先调用ServletFileUpload.isMultipartContent(request)返回一个boolean值,如果是true
则表示request支持文件上传,这里可以加测试语句,如果是false就知道是在request出了问题,
可能就是传递request的jsp中的<form>没有添加ENCTYPE="multipart/form-data"
2)、FileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload up=new ServletFileUpload(factory);
Iterator items;//这里使用老式的迭代器,会产生警告,因为没有用泛型,但不用理他
try{
items=up.parseRequest(request).iterator();
while(items.hasNext()){
FileItem item=(FileItem)items.next();
if(!item.isFormField()){//如果是文件上传框,则处理文件
String name=item.getName();//获得上传框中的字符串
name=name.subString(name.lastIndexOf('//')+1,name.length());//获得上传文件名
String savePath=request.getRealPath("upload")+File.separatorChar+name;
//生成保存上传文件的绝对路径,当然可以用绝对路径指定其他保存路径
//upload是新建的一个文件夹,用来保存上传的文件
File file=new File(savePath);//获得绝对路径后可以使用File来访问了
item.write(file);//写入具体的文件内容
}else if(item.isFormField()){//如果是普通文本输入框
String data=item.getString();
if(item.getFieldName().equals("user")){
user=data;
}else if(....//如果不是文件上传框则分别获得文本框内容
}catch(IOException e){
}catch(Exception e){
}
}
注意:在有附件上传功能的页面中,不能使用String name=request.getParameter("name");
这种简单的方式来获取表单提取的资料了
1、也是最容易忽略的一点:把JSP页面的<form>添加ENCTYPE="multipart/form-data"
2、加入第三方文件上传的API到项目中,在这里使用apache的jakarta项目的commons-*包里的API
3、文件上传步骤:
1)、首先调用ServletFileUpload.isMultipartContent(request)返回一个boolean值,如果是true
则表示request支持文件上传,这里可以加测试语句,如果是false就知道是在request出了问题,
可能就是传递request的jsp中的<form>没有添加ENCTYPE="multipart/form-data"
2)、FileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload up=new ServletFileUpload(factory);
Iterator items;//这里使用老式的迭代器,会产生警告,因为没有用泛型,但不用理他
try{
items=up.parseRequest(request).iterator();
while(items.hasNext()){
FileItem item=(FileItem)items.next();
if(!item.isFormField()){//如果是文件上传框,则处理文件
String name=item.getName();//获得上传框中的字符串
name=name.subString(name.lastIndexOf('//')+1,name.length());//获得上传文件名
String savePath=request.getRealPath("upload")+File.separatorChar+name;
//生成保存上传文件的绝对路径,当然可以用绝对路径指定其他保存路径
//upload是新建的一个文件夹,用来保存上传的文件
File file=new File(savePath);//获得绝对路径后可以使用File来访问了
item.write(file);//写入具体的文件内容
}else if(item.isFormField()){//如果是普通文本输入框
String data=item.getString();
if(item.getFieldName().equals("user")){
user=data;
}else if(....//如果不是文件上传框则分别获得文本框内容
}catch(IOException e){
}catch(Exception e){
}
}
注意:在有附件上传功能的页面中,不能使用String name=request.getParameter("name");
这种简单的方式来获取表单提取的资料了