所需jar包:commons-fileupload-1.2.1.jar commons-io-2.0`
JSP:
<form action="UploadFile" method="post" enctype="multipart/form-data">
上传文件1:<input type="file" name="filename"><br>
上传文件2:<input type="file" name="filename"><br>
<input type="submit" value="提交">
</form>
Servlet:
步骤:
1.创建文件属性的工厂类
DiskFileItemFactory df=new DisFileItemFactory;
2.使用工厂类来创建解析二进制流的对象
ServletFileUpload sf=new ServletFileUpload(df);
3.设置编码
sf.setHeaderEncoding=”utf-8”
4.解析二进制流,从中获取解析到的二进制流数据
List fileItems=sf.parseRequest(request);
5.从流中获取这个流对象
for(FileItem file:fileItems){
InputStream is=file.getInputStream();
//指定文件上传路径 如img文件夹
String path=request.getSession().getServletContext().getRealPath(“img”)+”\”+file.getName()
//输出流读
FileOutputStream fos=new FileOutputStream(new File(path));
int i=0;
while((i=is.read)!=-1){
fos.write(i)
}
//关流
fos.close();
is.close();
}
文件下载
通过链接下载,浏览器会自动识别文件,遇到不认识的格式就下载,认识的就打开,如果是图片就直接打开,是压缩包就下载,例:
a href=”/FileUpload/img/03.zip”>压缩包
a href=”/FileUpload/img/1.jpg”>图片
此处主要是通过Servlet下载
下载列表:br
a href=”filedown?filename=1.jpg”>图1 br
a href=”filedown?filename=上传秘籍.txt”>上传秘籍
Servlet:
步骤:
1.得到请求文件名
String filename=request.getParameter(“filename”);
2.得到下载的文件路径
String path=request.getSession().getServletContext().getRealPath(“img”).
//添加响应头信息
response.addHeader(“Content-type”,”application/octet-stream”);
//也可以设置响应头
// response.setContentType(getServletContext().getMimeType(filename));
response.addHeader(“Content-Disposition”,”attachment;filename=”+URLEncoder.encode(filename,”utf-8”)); //URLEncoder.encode将指定的文件的编码格式指定”);
//读取目标文件
String fullFilename = path+”\”+filename;
InputStream is=new FileInputStream(fullFilename);
OutputStream os=response.getOutputStream();
int i=0;
while((i=is.read())!=-1){
os.write(i);
}
os.close();
is.close();