一个简单的jsp文件下载

<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.OutputStream"%>
<%@page import="java.net.URLEncoder"%>
<%@page language="java" contentType="application/x-msdownload" pageEncoding="UTF-8"%>
<%
	response.reset();//可以加也可以不加
	response.setContentType("application/x-download");
	String filedownload = request.getRealPath("/file/t.txt");
	System.out.println(filedownload);
	String filedisplay = "t.txt";
	filedisplay = URLEncoder.encode(filedisplay, "UTF-8");
	response.addHeader("Content-Disposition", "attachment;filename=" + filedisplay);
	OutputStream outp = null;
	FileInputStream in = null;
	try {
		outp = response.getOutputStream();
		in = new FileInputStream(filedownload);

		byte[] b = new byte[1024];
		int i = 0;

		while ((i = in.read(b)) > 0) {
			outp.write(b, 0, i);
		}
		outp.flush();
	} catch (Exception e) {
		System.out.println("Error!");
		e.printStackTrace();
	} finally {
		if (in != null) {
			in.close();
			in = null;
		}
		if (outp != null) {
			outp.close();
			outp = null;
			// tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
			out.clear();
			out = pageContext.pushBody();
		}
	}
%>
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个使用 JSP 实现文件上传和下载的示例代码: 文件上传: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.io.*,java.util.*" %> <%@ page import="javax.servlet.*,javax.servlet.http.*" %> <% // 设置上传文件的保存路径 String savePath = getServletContext().getRealPath("/") + "uploads"; File fileSaveDir = new File(savePath); if (!fileSaveDir.exists()) { fileSaveDir.mkdir(); } // 处理上传文件 String fileName = "", filePath = ""; for (Part part : request.getParts()) { fileName = extractFileName(part); filePath = savePath + File.separator + fileName; part.write(filePath); } out.println("文件上传成功!"); // 获取文件名 private String extractFileName(Part part) { String contentDisposition = part.getHeader("content-disposition"); String[] items = contentDisposition.split(";"); for (String item : items) { if (item.trim().startsWith("filename")) { return item.substring(item.indexOf("=") + 2, item.length() - 1); } } return ""; } %> ``` 文件下载: ```jsp <%@ page language="java" contentType="application/octet-stream" pageEncoding="UTF-8"%> <%@ page import="java.io.*,javax.servlet.*,javax.servlet.http.*" %> <% String fileName = request.getParameter("file"); String filePath = getServletContext().getRealPath("/") + "uploads" + File.separator + fileName; File file = new File(filePath); if (file.exists()) { response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); response.setContentType("application/octet-stream"); FileInputStream inputStream = new FileInputStream(file); OutputStream outputStream = response.getOutputStream(); byte[] buffer = new byte[4096]; int bytesRead = -1; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } inputStream.close(); outputStream.close(); } else { out.println("文件不存在!"); } %> ``` 注意:这只是一个简单的示例,实际应用中还需要做一些错误处理和安全性检查。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值