JSP的文件上传和下载

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP '1.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
 <form enctype="multipart/form-data" action="<%=path %>/2.jsp" method="post">
    文件名:<input  type="text" name="uname"/>
   选择图片: <input  type="file"  name="myfile"/>
   <input type="submit" value="提交"/>
    </form>
   <a href="Servlet?filename=/s.jpg ">下载文件</a>  ${errorResult} 
  </body>
</html>
文件上传必须使用type="file"这个类型的

<%@page import="org.apache.commons.fileupload.FileItemFactory"%> <%@page import="java.io.File"%> <%@page import="org.apache.commons.fileupload.FileItem"%> <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>

 <%

   //解决乱码问题

   request.setCharacterEncoding("utf-8");

   //判断请求信息中的内容是否是"multipart/form-data"类型

   boolean flag=ServletFileUpload.isMultipartContent(request);

   if(flag){

   //找到一个解析器,解析请求中的各个项目

   //工厂参数是一个接口,用他的实现类

   FileItemFactory  factory=new DiskFileItemFactory();

   //如果要解析,必须借助工厂参数

   ServletFileUpload  upload=new  ServletFileUpload(factory);

   //使用parseRequest  返回一个类型为FileItemlist集合

   List<FileItem> list=upload.parseRequest(request);

   //每一个fileitem都代表一个表单元素

   //使用迭代器迭代

   Iterator<FileItem>  iter=list.iterator();

   //使用while循环进行逐项迭代

   //iter.hasNext()判断下一个有没有元素

   while(iter.hasNext()){

   //如果下一个不为空

      FileItem  item= iter.next();

      if(item!=null){

       //对当前item进行判断看是普通的还是上传用的

      boolean bool= item.isFormField();

      if(bool){//证明是普通表单

      //获取该表单的value

      String name=item.getFieldName();//返回表单元素的name

      if(name.equals("uname")){

       out.print(item.getString("utf-8"));

      }

      }else{//是一个上传文件域

      String  fname=item.getName();//上传文件域的文件名

      //扔到服务器目录下

      String path="/upload/";//文件上传不能使用相对路径

      //转换为绝对路径

      path=this.getServletContext().getRealPath(path);

      //构建一个file对象,借助File对象的getname方法

      File file=new File(fname);

      //构建一个file对象  第一个参数父路径    第二个参数子路径  

      File ffile=new File(path,file.getName());

      item.write(ffile);

      out.print("上传成功");

      }

      }

   }

   }

   %>  

这里是文件上传 

下面是文件下载
package cn.happy;


import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;


import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import com.sun.corba.se.spi.orbutil.fsm.Input;


public class Servlet extends HttpServlet {


	/**
		
		苏小白	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
doPost(request, response);
	}


	/**
		
		苏小白	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {


		String path=getServletContext().getRealPath("/")+"/upload/";
		String filename=request.getParameter("filename");
		File file=new File(path+filename);
		if(file!=null){
			response.setContentType("application/x-msdownload");
			response.setHeader("Content-Disposition", "attachment;filefilename=\""+filename+"\"");
			InputStream inputStream=new FileInputStream(file);
			ServletOutputStream sops=response.getOutputStream();
		byte b[]=new byte[1024];
		int n;
		while((n=inputStream.read(b))!=-1){
			
			sops.write(b,0,n);
		}
		sops.close();
		inputStream.close();
		}
		else{
			
			request.setAttribute("errorResult", "文件不存在或加载失败");
			request.getRequestDispatcher("/1.jsp").forward(request, response);
			
			
		}
		
	}


}










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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值