servlet实现文件上传下载

upload.jsp  上传界面


<form action="UploadServlet" enctype="multipart/form-data" method="post">
<p>
    用户名:<input type="text" name="username" size="20">
</p>
<p> 
   <input type="file" name="file" multiple="multiple">
</p>  
    <input type="submit" value="提交">
</form>


servlet上传功能
路径:/UploadServlet


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream is=null;
FileOutputStream fos=null;
//1.创建解析工厂
FileItemFactory factory=new DiskFileItemFactory();
//2.创建解析器
ServletFileUpload upload=new ServletFileUpload(factory);
//3.设置编码格式
upload.setHeaderEncoding("UTF-8");
//4.解析request请求
try {
List<FileItem> list=upload.parseRequest(request);
//5.对集合进行遍历
for(FileItem item:list){
    //6.判断输入文件类型
if(item.isFormField()){
String name=item.getFieldName();//获得标签的属性
String value=item.getString();               //获得标签的值
System.out.println(name+":"+value);
}
else {
String filename=item.getName();   //获得上传文件名
request.setAttribute("file", filename);
is=item.getInputStream();  //输入流
String path=this.getServletContext().getRealPath("/uploadfolder/");  //在webcontent下面的文件夹
fos=new FileOutputStream(path+filename); //输出流
int i=-1;
byte[] buf=new byte[512];
while((i=is.read(buf))!=-1){
fos.write(buf);
}
}
}
request.getRequestDispatcher("success.jsp").forward(request, response);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if (is!=null) {
is.close();
}
if (fos!=null) {
fos.close();
}
}
}






下载
  download.jsp下载界面:
  <a href="DownLoadServlet?file=ajax请求.png">下载</a>


路径:/DownLoadServlet
servlet下载功能实现
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置字符编码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//获取文件及其路径
String filename=request.getParameter("file");
String path=this.getServletContext().getRealPath("/uploadfolder/");
File file=new File(path+filename);
//下载步骤
//1.设置响应头,设置文件下载的默认名,激活浏览器的下载框
response.setHeader("Content-Disposition","attachment;fileName="+URLEncoder.encode(filename, "utf-8"));
//2.获取输出流
ServletOutputStream os=response.getOutputStream();
//3.文件输入流
FileInputStream fis=new FileInputStream(file);
int i=-1;
byte[] buf=new byte[512];
//4.向浏览器输出信息
while((i=fis.read(buf))!=-1){
os.write(buf);
}
//5.关闭流
os.close();
fis.close();




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值