java 上传和下载文件,java文件的上传和下载解决办法

当前位置:我的异常网» Java Web开发 » java文件的上传和下载解决办法

java文件的上传和下载解决办法

www.myexceptions.net  网友分享于:2015-08-26  浏览:67次

java文件的上传和下载

//此处是下载

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

//得到下载文件的名字

String filename=request.getParameter("filename");

//解决中文乱码问题

filename=new String(request.getParameter("filename").getBytes("iso-8859-1"),"gbk");

//创建file对象

File file=new File("E://gongzuo//apache-tomcat-6.0.30//temp//"+filename);

//设置response的编码方式

response.setContentType("application/x-msdownload");

//写明要下载的文件的大小

response.setContentLength((int)file.length());

//设置附加文件名

response.setHeader("Content-Disposition","attachment;filename="+filename);

//解决中文乱码

response.setHeader("Content-Disposition","attachment;filename="+new String

(filename.getBytes("gbk"),"iso-8859-1"));

//读出文件到i/o流

FileInputStream fis=new FileInputStream(file);

BufferedInputStream buff=new BufferedInputStream(fis);

byte [] b=new byte[1024];//相当于我们的缓存

long k=0;//该值用于计算当前实际下载了多少字节

//从response对象中得到输出流,准备下载

OutputStream myout=response.getOutputStream();

//开始循环下载

while(k

int j=buff.read(b,0,1024);

k+=j;

//将b中的数据写到客户端的内存

myout.write(b,0,j);

}

//将写入到客户端的内存的数据,刷新到磁盘

myout.flush();

out.flush();

out.close();

}

//上传

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

response.setCharacterEncoding("utf-8");//响应消息内容能够正常显示中文

request.setCharacterEncoding("utf-8");//请求信息时

String filename="";//文件名称

String filepath="";//文件路径

String fileDosc="";//文件描述

long fileSize=0;//文件的大小

//创建文件上传的对象。借助 common-fileupload.jar

DiskFileItemFactory disk=new DiskFileItemFactory();//

long maxsize=1024*1024*5;//设置上传文件最大为5M

disk.setSizeThreshold(5102);//为上传文件在缓冲中设置一个大小为5K

String tmpFile=this.getServletContext().getRealPath("/");//获取上传路径

System.out.println(tmpFile);

File filo=new File(tmpFile+"tmpFile");//保存上传文件的目录

if(!filo.exists()){

filo.mkdirs();//服务器上是否有上传文件路径的目录如果没有则创建

}

disk.setRepository(filo);//将上传文件的目录加入到硬盘对象中

//创建能够解析上传文件的2进制类 由common-fileupload 与 io提供

ServletFileUpload sfu=new ServletFileUpload(disk);

sfu.setSizeMax(maxsize);//设置上传文件的最大容量

List list=null;

try{

list=sfu.parseRequest(request);//完成对上传文件的解析 同时将解析后的内容放到list里

}catch(Exception e){

out.println("

out.print("alert('上传文件失败')");

out.println("");

}

//遍历list对象中的内容 完成将上传文件保存到服务器中

Iterator iterator=list.iterator();

int n=0;//控制文本域中上传的次数

while(iterator.hasNext()){//遍历迭代器中的内容

FileItem fileitem= (FileItem) iterator.next();//next返回的objc的类型要强转fileitem是上传文件的内容

文章评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值