您的位置:首页 > 编程语言 > Java开发

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

2015-09-18 00:00 531 查看
摘要: 下载功能的实现。

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

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


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

[code=plain]        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();
}
}

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

[code=plain]                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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: