Servlet之文件的上传与下载
文件上传和文件下载是我们学JAVA Web时必不可少的模块。今天我们探讨下这个问题
文件上传:
request.setCharacterEncoding("utf-8");//设置请求乱码
response.setContentType("text/html;charset=utf-8");//设置响应乱码,先把两个乱码问题解决。防止乱码
DiskFileItemFactory fatory=new DiskFileItemFactory();//建立一个DiskFileItemFactory
ServletFileUpload fileupload = new ServletFileUpload(fatory);//使用ServletFileUpload调用这个工厂
// fileupload.setFileSizeMax(1024*60);//设置文件单个大小不超过60k
fileupload.setSizeMax(1024*300);//设置文件总大小不超过300k
ServletContext servletContext = request.getServletContext();
String realPath = servletContext.getRealPath("/upfile");////获取指定文件夹的路径(新建一个服务器上的upfile的文件夹)
File file=new File(realPath);//在这个路径下声明file
if(file.exists()){
file.mkdirs();
}//文件存在则遍历
try {
List<FileItem> filelist = fileupload.parseRequest(request);
for(FileItem item:filelist){
if(item.isFormField()){
String name=item.getFieldName();
}else{
//不上传空文件
long size = item.getSize();
if(size ==0){//文件为空,跳过此次判断,不进行上传
continue;
}
//使用UUID唯一标识文件名字,使图片不被覆盖。
String name = item.getName();
String prefix = UUID.randomUUID().toString();
prefix = prefix.replace("-","");
String fileName = prefix+"_"+name;
try {
item.write(new File(realPath+"\\"+fileName));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch(FileSizeLimitExceededException e){
System.out.println("单个文件超过60kb");
}catch(SizeLimitExceededException e){
System.out.println("总文件超过300kb");
}catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
文件下载:
ServletContext servletContext = request.getServletContext();
String fileName="童话镇.mp3";
String path = servletContext.getRealPath("/WEB-INF/"+fileName);//得到文件的路径
File file=new File(path);
InputStream in=new FileInputStream(file);//将文件放在输入流中
//fileName=new String(fileName.getBytes("gbk"),"iso8859-1");
fileName = java.net.URLEncoder.encode(fileName,"utf-8");//防止中文乱码,下载后不能播放和观看
response.setHeader("Content-Disposition", "attachment;filename="+fileName);
ServletOutputStream out = response.getOutputStream();
IOUtils.copy(in, out);//调用IOUtils方法将输入流转为输出流
in.close();//关闭输入流
Servlet之文件的上传与下载的更多相关文章
- jsp+servlet实现文件的上传和下载
实现文件的上传和下载首先需要理解几个知识,这样才可以很好的完成文件的上传和下载: (1):上传文件是上传到服务器上,而保存到数据库是文件名 (2):上传文件是以文件转换为二进制流的形式上传的 (3): ...
- Servlet 实现文件的上传与下载
这段时间尝试写了一个小web项目,其中涉及到文件上传与下载,虽然网上有很多成熟的框架供使用,但为了学习我还是选择了自己编写相关的代码.当中遇到了很多问题,所以在此这分享完整的上传与下载代码供大家借鉴. ...
- 在SpringMVC框架下实现文件的 上传和 下载
在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
- java web(四):request、response一些用法和文件的上传和下载
上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...
- java实现文件的上传和下载
1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...
- Spring MVC 实现文件的上传和下载
前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:“用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流”.我回复他说:“使用Spring MVC框架可以做到这一点,因为Spri ...
- 文件的上传和下载--SpringMVC
文件的上传和下载是项目开发中最常用的功能,例如图片的上传和下载.邮件附件的上传和下载等. 接下来,将对Spring MVC环境中文件的上传和下载进行详细的讲解. 一.文件上传 多数文件上传都是通过表单 ...
- java 文件的上传和下载
主要介绍使用 smartupload.jar 包中的方法对文件的上传和下载.上传时文件是存放在服务器中,我用的是tamcat. 首先建立一个servlet 类,对文件的操作 package com.d ...
随机推荐
- salesforce零基础学习(七十六)顺序栈的实现以及应用
数据结构中,针对线性表包含两种结构,一种是顺序线性表,一种是链表.顺序线性表适用于查询,时间复杂度为O(1),增删的时间复杂度为O(n).链表适用于增删,时间复杂度为O(1),查询的时间复杂度为O(n ...
- 3. leetcode 463 Island Perimeter
思路:设原始周长为4*节点数,每当出现一次相邻的情况,原始周长会减2.
- 使用纯css3写出来的表情包 (^v^)
效果如图所示: 不多说,我们直接一个一个来写出,主要列出每个表情的结构,样式我们统一写出,基本全部会用到,颜色以及结构可以根据自己的需求来调整.(里面可是没有一张图片的哦) 页面预览:http://2 ...
- Windows下搭建Git 服务器: BONOBO GIT SERVER + TortoiseGit
本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...
- 优化hexo访问速度-将hexo部署到云主机VPS
写在开始 一开始将自己hexo部署到github,结果发现打开页面速度有点慢,然后又将其同时部署到coding,实现双线路访问,国内解析记录到coding,国外解析到github,这样确实网站的速度能 ...
- POJ 2593 Max Sequence
Max Sequence Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 17678 Accepted: 7401 Des ...
- 安徽省2016“京胜杯”程序设计大赛_H_单身晚会
单身晚会 Time Limit: 1000 MS Memory Limit: 65536 KB Total Submissions: 53 Accepted: 16 Description ZJ和Z ...
- javaWeb学习之tomcat服务器
一.web a) web结构 b) 常见的服务器 WebLogic: orcale公司的产品,支持JAVAEE规范,收费 WebsphereAS: IBM公司的产品 ,支持 ...
- 7种方法解决移动端Retina屏幕1px边框问题
在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样 ...
- go的变量redeclare的问题,golang的一个小坑
go的变量声明有几种方式: 1 通过关键字 var 进行声明 例如:var i int 然后进行赋值操作 i = 5 2 最简单的,通过符号 := 进行声明和赋值 例如: i:=5 golang会 ...