本文目录一览:
jsp实现文件的下载
%@pagelanguage="java" import="java.io.*,java.net.*" contentType="application/x-msdownload" pageEncoding="UTF-8"%%
//关于文件下载时采用文件流输出的方式处理:
//加上response.reset(),并且所有的%后面不要换行,包括最后一个;
String url = request.getParameter("url");
System.out.print(url);
int k = url.lastIndexOf("\\");
String url1=url.substring(k+1,url.length());
response.reset();//可以加也可以不加
response.setContentType("application/x-download");
String filedownload = url;
String filedisplay = url1;
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);
}
out.clear();
out = pageContext.pushBody();
outp.flush();
}
catch(Exception e)
{
System.out.println("Error!");
}
finally
{
if(in != null)
{
in.close();
in = null;
}
if(outp != null)
{
outp.close();
outp = null;
}
}
%
用jsp怎么编写文件下载代码
下面是我写的一个小例子,下载远程文件urlString,到本地文件localFile.
成功返回True,不成功返回False.
把这代码插入到你JSP中用到的地方就OK了:)
public boolean downLoadFile(String urlString, String localFile) {
URL url;
byte[] buffer = new byte[512];
int size = 0;
boolean success = false;
try {
url = new URL(urlString);
BufferedInputStream stream = new BufferedInputStream(url.openStream());
FileOutputStream fos = new FileOutputStream(localFile);
while ((size = stream.read(buffer)) != -1) {
fos.write(buffer, 0, size);
}
fos.close();
stream.close();
success = true;
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return success;
}
jsp页面如何实现下载文档
jsp页面下载文档是在jsp中有一个a标签 ,当用户点击a标签的时候下载文件。
一般采用href属性直接指向一个服务器地址,只要链接的文件存在,就会给出弹出保存对话框.
点击a标签 先执行onclick事件,再请求href中指向的地址。
前端jsp:
a href="#" onclick="javascript:downloadtest('${app.id}')" id="pluginurl" style="color: #83AFE2;text-decoration:underline;"/a
然后在js中:
function downloadtest(id){
var url = "%=request.getContextPath()%/app/download" + "/" + id;
$("#pluginurl").attr("href",url);
}
后台处理下载逻辑的java代码:
/**
* 下载文件
* @param id appid
* @param response
*/
@RequestMapping(value="/download/{id}")
public void download(@PathVariable String id, HttpServletResponse response){
String filepath = "";
Result result = appService.getAppById(id);
App app = (App) result.getMap().get("app");
if(app == null){
return;
}
filepath = app.getUrl();
File file = new File(filepath);
InputStream inputStream = null;
OutputStream outputStream = null;
byte[] b= new byte[1024];
int len = 0;
try {
inputStream = new FileInputStream(file);
outputStream = response.getOutputStream();
response.setContentType("application/force-download");
String filename = file.getName();
filename = filename.substring(36, filename.length());
response.addHeader("Content-Disposition","attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
response.setContentLength( (int) file.length( ) );
while((len = inputStream.read(b)) != -1){
outputStream.write(b, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(inputStream != null){
try {
inputStream.close();
inputStream = null;
} catch (IOException e) {
e.printStackTrace();
}
}
if(outputStream != null){
try {
outputStream.close();
outputStream = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
JSP通过超链接下载文件
JSP页面点击超链接弹出文件下载,代码如下:
%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%
//然后
a href ="%= basePath %/upload/aa.doc }" target="_blank"下nbsp;nbsp;载/a
注:%= basePath %获取部署JSP项目的根目录,/upload/aa.doc/是根目录uploadaa.doc文件,根据需求修改即可。