炫酷的文件上传效果概要.docx
文本预览下载声明
1、文件上传基础
? ? 1)浏览器页面:
????form action=${pageContext.request.contextPath }/UploadServlet method=POST enctype=multipart/form-data
选择文件:input type=file name=name/br/
文件信息:input type=text name=info/
input type=submit value=提交/
/form
? ? 2)服务器Servlet端:
? ??? ??? ? 使用Apache提供的和文件上传有关的两个jar包:common-fileupload-1.3.1.jar和common-io-2.2.jar。注意后面那个包的版本一定要=2。
? ??? ? 代码:
public class UploadServlet extends HttpServlet {
?
private String serverPath = e:/uploader/;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(utf-8);
response.setContentType(text/html;charset=utf-8);
//[1]创建一个DiskFileItemFactory对象,配置缓存信息
DiskFileItemFactory factory = new DiskFileItemFactory();
//[2]创建ServletFIleUpload对象
ServletFileUpload sfu = new ServletFileUpload(factory);
//[3]设置文件名称的编码
sfu.setHeaderEncoding(utf-8);
sfu.setFileSizeMax(1024);//设置单个文件的最大字节数:1M
sfu.setSizeMax(10*1024);//设置整个表单的最大字节数:10M
//[4]开始解析文件
try {
//一个文件/普通数据就封装在一个FileItem中
ListFileItem items = sfu.parseRequest(request);
?
//[5]获取文件信息
for(FileItem item:items){
//[6]判断是文件还是普通数据
if(item.isFormField()){
//普通数据
String fileName = item.getFieldName();
if(fileName.equals(info)){
//获取数据
String value = item.getString();
System.out.println(info:+value);
}
}else{
//文件
//获取文件名称
String name = item.getName();
//获取文件实际内容
InputStream is = item.getInputStream();
//保存文件,使用common-io.jar包中的工具类,将输入流保存至文件中
FileUtils.copyInputStreamToFile(is, new File(serverPath+/+name));
System.out.println(文件:+name+保存成功);
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
?
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
?
doGet(request,response);
}
?
}
2、使
显示全部