文件上传和文件下载是我们学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之文件的上传与下载的更多相关文章

  1. jsp+servlet实现文件的上传和下载

    实现文件的上传和下载首先需要理解几个知识,这样才可以很好的完成文件的上传和下载: (1):上传文件是上传到服务器上,而保存到数据库是文件名 (2):上传文件是以文件转换为二进制流的形式上传的 (3): ...

  2. Servlet 实现文件的上传与下载

    这段时间尝试写了一个小web项目,其中涉及到文件上传与下载,虽然网上有很多成熟的框架供使用,但为了学习我还是选择了自己编写相关的代码.当中遇到了很多问题,所以在此这分享完整的上传与下载代码供大家借鉴. ...

  3. 在SpringMVC框架下实现文件的 上传和 下载

    在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...

  4. 初学Java Web(7)——文件的上传和下载

    文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...

  5. java web(四):request、response一些用法和文件的上传和下载

    上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...

  6. java实现文件的上传和下载

    1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...

  7. Spring MVC 实现文件的上传和下载

    前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:“用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流”.我回复他说:“使用Spring MVC框架可以做到这一点,因为Spri ...

  8. 文件的上传和下载--SpringMVC

    文件的上传和下载是项目开发中最常用的功能,例如图片的上传和下载.邮件附件的上传和下载等. 接下来,将对Spring MVC环境中文件的上传和下载进行详细的讲解. 一.文件上传 多数文件上传都是通过表单 ...

  9. java 文件的上传和下载

    主要介绍使用 smartupload.jar 包中的方法对文件的上传和下载.上传时文件是存放在服务器中,我用的是tamcat. 首先建立一个servlet 类,对文件的操作 package com.d ...

随机推荐

  1. iOS App内存优化之 解决UIImagePickerController的图片对象占用RAM过高问题

    这个坑会在特定的情况下特别明显: 类似朋友圈的添加多张本地选择\拍照 的图片 并在界面上做一个预览功能 由于没有特别的相机\相册需求,则直接使用系统自带的UIImagePickerController ...

  2. python之二维码生成

    生成的二维码只是网址的链接 直接上代码: import qrcode title = input("要生成的内容:") img = qrcode.make(title) with ...

  3. 读书笔记_MVC__关于通过js构建ORM,实现Model层

    最近一直在学习MVC构建富应用的WEB程序,自己一直对MVC的设计模式理解的不是十分透彻,终于在研读了github上Spine的源码之后,对构建Model层有了一点自己的理解. 本文仅为个人理解,如有 ...

  4. 在CentOS7上部署OpenStack 步骤详解

    OpenStack作为一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,开放源代码项目的云计算管理平台项目.具体知识我会在后面文章中做出介绍,本章主要按步骤给大家演示在Cent ...

  5. 《MVC实现用户权限》

    用树形的结构显示权限的结构,树形结构的用的是jquery的控件 1. 赋给用户一个userid,在用户角色表将用户和角色关联起来,在角色权限表中将角色和权限对应起来,权限表中存储的是菜单栏的名称. 2 ...

  6. Unity Shader入门精要读书笔记(一)序章

    本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...

  7. 解决删除元素动画的bug

    效果说明 首先说明一下我需要做到的效果 其实很简单---点击删除按钮的时候,加入删除动画 删除动画是这样的,高度和宽度都会均匀的变小,内部的元素需要被隐藏(因为会有文字挤在一起):直到变为0结束,时长 ...

  8. React Native 系列(一) -- JS入门知识

    前言 本系列是基于React Native版本号0.44.3写的,最初学习React Native的时候,完全没有接触过React和JS,本文的目的是为了给那些JS和React小白提供一个快速入门,让 ...

  9. 用户单独管理Jenkins的某些项目

    管理用户: 建立用户: 安装Role-Based Strategy插件 安装插件后,进入系统设置页面,配置如下: 在系统管理页面点击Manage and Assign Roles进入角色管理页面: 1 ...

  10. ARP与RARP协议及arp脚本

    1.什么是ARP与RARP协议 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议. 在⽹络通讯时,源主机的应⽤程序知道 ...