javaweb文件的下载和上传功能的实现(2)

前台代码我们可以用一个<a>标签:

<a href="${pageContext.request.contextPath}/servlet/NewsServlet?action=filedownload&newsId=${news.newsId }">
</a>

然后我们进入servlet,准备下载文件:

        String filePath=PropertiesUtil.getValue("filePath")+"\\"+imageName;
        //获得文件的地址
	File file=new File(filePath);
	//为你给的地址,创建一个file文件实例
	if(!file.exists()){
	//如果没有这个文件存在,提示错误。
		request.setAttribute("message", "您要下载的资源已被删除!!");
		request.getRequestDispatcher("/index.jsp").forward(request, response);
		return;
	}
	
	String realname = imageName.substring(14, imageName.length());
	//为后面你想修改下载时候文件的名字起名字。
	
	//response.setHeader("content-disposition","attachment;imageName=" + URLEncoder.encode(realname, "UTF-8"));
	//待定

	
	FileInputStream in=new FileInputStream(filePath);
	//创建一个输入流
	ByteArrayOutputStream out = null;
	//创建一个可以捕捉二进制的输出流

	byte[] data = null;
	//后面用来存放二进制文件的数据
	try{
		out = new ByteArrayOutputStream();
		byte[] buffer=new byte[1024];
		int len=0;
		while((len=in.read(buffer))>0){
			//输出缓冲区的内容到浏览器,实现文件下载
			out.write(buffer, 0, len);
		}
		in.close();
		data = out.toByteArray();//把out中的内容输入到data中
		out.close();
	}catch(Exception e){
		e.printStackTrace();
	}
	realname = new String(realname.getBytes("UTF-8"), "ISO-8859-1");
	response.setContentType("application/octet-stream");
	//必须要
	response.setHeader("content-disposition", "attachment; filename="+realname);
	//修改下载时候下载文件的名字i
			
	OutputStream out1=response.getOutputStream();
	out1.write(data);
	//下载实现
	out1.flush();
	out1.close();		
}catch(Exception e){
	e.printStackTrace();
}finally{
	try {
		con.close();
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

    下面是一个自己做得时候,一个部分下载的代码!!

                String newsId=request.getParameter("newsId");
		Connection con=null;
		String imageName=null;
		con=dbUtil.getConn();
		News news;
		try {
			news = newsDao.getNewsById2(con, newsId);
			imageName=news.getImageName();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String filePath=PropertiesUtil.getValue("filePath")+"\\"+imageName;
		File file=new File(filePath);
		if(!file.exists()){
			request.setAttribute("message", "您要下载的资源已被删除!!");
			request.getRequestDispatcher("/index.jsp").forward(request, response);
		}
		String realname = imageName.substring(14, imageName.length());
		//response.setHeader("content-disposition","attachment;imageName=" + URLEncoder.encode(realname, "UTF-8"));
		FileInputStream in=new FileInputStream(filePath);
		ByteArrayOutputStream out = null;
		byte[] data = null;
		out = new ByteArrayOutputStream();
		byte[] buffer=new byte[1024];
		int len=0;
		while((len=in.read(buffer))>0){
			//输出缓冲区的内容到浏览器,实现文件下载
			out.write(buffer, 0, len);
		}
		in.close();
		data = out.toByteArray();
		out.close();
		realname = new String(realname.getBytes("UTF-8"), "ISO-8859-1");
		response.setContentType("application/octet-stream");
		response.setHeader("content-disposition", "attachment; filename="+realname);
		
		OutputStream out1=response.getOutputStream();
		out1.write(data);
		out1.flush();
		out1.close();
		try {
			con.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


你可能感兴趣的:(javaweb文件的下载和上传功能的实现(2))