首页 > 编程知识 正文

jsp实现文件下载的两种方式,jsp实现文件的上传和下载

时间:2023-12-27 22:27:41 阅读:326544 作者:PSQO

本文目录一览:

jsp中mp3文件下载要怎么实现?

有很多种方式:

1、直接request.sendredirect("music/test.mp3");

2、如果你想隐藏路径:

RequestDispatcher rd = sc.getRequestDispatcher("/music/test.mp3").forward(request, response);

3、或者直接用流的方式返回给用户。

如果返回mp3文件浏览器直接打开乱码文件,你需要在web.xml添加mime映射:

mime-mapping

extensionmp3/extension

mime-typeaudio/x-mpeg/mime-type

/mime-mapping

jsp 下载文件路径问题

下载文件有两种方式。

1.是在你的服务器上能相对找到。

即  这个映射的是你服务器上的 D:web 这个目录

那么你这个文件就要在 D:web 这个目录中。

比如 D:webdownfile111.xls

你的超链接可以这样写。 a href="/downfile/111.xls"download/a

2.就是用流的方式下载。

a href="#" onclilck="......"download/a

这样的超链接就不是指向一个文件了,而是向服务器提交下载申请。

这样执行到你后台的servlet类中,你可以根据一些必要的标识知道你要下载的文件。

这样你把D:111.xls文件读取出来。 然后写入到response.getOutPutStream (这个方法有些记不清了,你查一下) 这样实现下载。

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页面如何实现下载文档

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 如何实现文件上传和下载功能?

上传:

MyjspForm mf = (MyjspForm) form;// TODO Auto-generated method stub

FormFile fname=mf.getFname();

byte [] fn = fname.getFileData();

OutputStream out = new FileOutputStream("D:\"+fname.getFileName());

Date date = new Date();

String title = fname.getFileName();

String url = "d:\"+fname.getFileName();

Upload ul = new Upload();

ul.setDate(date);

ul.setTitle(title);

ul.setUrl(url);

UploadDAO uld = new UploadDAO();

uld.save(ul);

out.write(fn);

out.close();

下载:

DownloadForm downloadForm = (DownloadForm)form;

String fname = request.getParameter("furl");

FileInputStream fi = new FileInputStream(fname);

byte[] bt = new byte[fi.available()];

fi.read(bt);

//设置文件是下载还是打开以及打开的方式msdownload表示下载;设置字湖集,//主要是解决文件中的中文信息

response.setContentType("application/msdownload;charset=gbk");

//文件下载后的默认保存名及打开方式

String contentDisposition = "attachment; filename=" + "java.txt";

response.setHeader("Content-Disposition",contentDisposition);

//设置下载长度

response.setContentLength(bt.length);

ServletOutputStream sos = response.getOutputStream();

sos.write(bt);

return null;

jsp如何实现文件上传与下载?

如果服务器端程序使用的是struts2框架的话,我会,其他的不会。

struts2:

对于上传,jsp页面只需要有个file类型的表单域,如input type="file" name="xxx" /

struts2的接收请求的action中再写三个属性与这个表单域的名称对应起来,他们是,File类型的xxx,String类型的xxxFileName,String类型的xxxContentType,并其设置相应的set/get方法。则框架负责接收上传文件的字节流,解析文件名,文件类型,直接使用即可。

对于下载,只需要在action的配置文件中设置如下返回值类型和相应参数:

result type="stream"

param name="contentType"application/octet-stream/param

param name="inputName"inputStream/param

param name="contentDisposition"attachment;filename=xxx /param xxx为下载文件的文件名

/result

且在action总写一个返回值类型为InputStream的getInputStream方法,此方法返回你要下载的文件的流即可。

ps:其中contentDisposition的配置信息中attachment代表点击下载时浏览器先弹出个保存位置的提示框,然后再决定是否下载,默认是inline,即直接打开文件。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。