,,servlet实现文件上传、预览、下载、删除功能

,,servlet实现文件上传、预览、下载、删除功能

this.doPost(请求,响应);

}

/**

* 处理文件上传的邮政

* @预防措施下方的类名出自包导入org。阿帕奇。公地。文件上传。*

*/

受保护的void doPost(HttpServletRequest请求,HttpServletResponse响应)

引发ServletException,IOException {

//1.设置参数编码

请求。setcharacterencoding(“UTF-8”);

//设置响应数据字符集

回应。setcharacterencoding(“UTF-8”);

//设置响应数据格式

//响应。设置内容类型(' application/JSON;charset=UTF-8 ');

PrintWriter out=响应。getwriter();

//2.创建文件上传处理工厂

DiskFileItemFactory factory=new DiskFileItemFactory();

//3.设置临时文件存放地点

//3.1获取当前网应用程序对象(网页容器在启动时,它会为每个网应用程序都创建一个对应的小型应用程序上下文对象,它代表当前网应用)

servlet上下文servlet上下文=this。getservlet配置().getServletContext();

//3.2获取服务器的临时目录(tomcat、WebLogic)

//D:\ program files(x86)\ APACHE \ TOMCAT \ APACHE-TOMCAT-7。0 .40-x86 \ work \ Catalina \ localhost \ demo

文件存储库=(文件)servlet上下文。get属性(' javax。servlet。语境。tempdir’);

//3.3临时文件将会存储在该目录下

factory.setRepository(储存库);

//4.创建文件上传处理器

servlet文件上传上传=新servlet文件上传(工厂);

//5.判断请求类型是否为文件上传类型

布尔多部分内容=上传。ismultipartcontent(请求);

MapString,String mapData=new HashMapString,String();

//返回信息

字符串msg=

//错误信息

字符串错误msg=

//文件名

字符串文件名="";

if (multipartContent) {

尝试{

//获取请求参数

string param=请求。getparameter(' param 1 ');

系统。出去。println(param);

//6.解析请求信息

ListFileItem items=upload。解析请求(请求);

//7.对所有请求信息进行判断

IteratorFileItem ITER=items。迭代器();

while (iter.hasNext()) {

FileItem item=ITER。next();

//信息为文件格式

如果(!item.isFormField()) {

fileName=processUploadedFile(param,item);

msg='上传成功!';

}

}

} catch (FileUploadException e) {

e。printstacktrace();

msg='上传失败!';

error msg=e . getmessage();

}

}否则{

msg='格式表单类型不是多部分/形式数据,无法上传!';

}

mapData.put('msg ',msg);

mapData.put('errorMsg ',error msg);

mapData.put('fileName ',文件名);

//将地图转成JSON

JSON对象JSON数据=JSON对象。来自对象(mapData);

//返回客户端信息

出去。打印(JSON数据。tostring());

}

/**

* 处理上传的文件

* @param ORG_ID

* @param订单

* @param item

*/

@SuppressWarnings('未使用)

私有字符串processUploadedFile(String param,FileItem item) {

//处理文件上传

字符串字段名=项目。获取字段名();//默认值为文件数据

//获取文件名

字符串文件名=项目。getname();

//内容类型:应用程序/八位字节流

字符串内容类型=项目。获取内容类型();

布尔isin memory=item。isin in memory();

//获取文件大小

long sizeInBytes=item。getsize();

//1.指定文件上传的根路径

字符串路径=this。getservletcontext().获取真实路径('/we b-INF/upload files ');

//2.路径构成:/上传文件/文件名

//TODO可以自定义文件存放路径

//3.根据路径批量创建文件夹

文件文件目录=新文件(路径);

//目录不存在时,再创建

如果(!fileDirectories.exists()) {

文件目录。mkdirs();//所有的文件夹都创建成功才返回真实的

}

//4.文件名格式校验(文件名中不能包含#号)

int index=文件名。(“#”)的索引;

if (index -1) {

fileName=fileName.replace('# ',' _ ');

}

//TODO可以对文件名进行重命名

//5.在指定路径下创建指定名称的文件

文件上传文件=新文件(路径"/"文件名);

//6.判断该文件是否已存在

如果(!uploadedFile.exists()) {

尝试{

//使用了这个方法写入文件,临时文件会被系统自动删除

项目。写(上传的文件);

} catch(异常e) {

e。printstacktrace();

}

}

//返回重名后的文件名

返回文件名;

}

/**

* 处理信息为普通的格式

* @param item

*/

私有void processFormField(FileItem item){

//处理常规表单字段

if (item.isFormField()) {

字符串名称=项目。获取字段名();

字符串值=项目。getstring();

}

}

}

文件查看代码(FileView.java文件)

包控制器.文件处理器

导入Java。io。bufferedinputstream

导入Java。io。bufferedoutputstream

导入Java。io。文件输入流;

导入Java。io。io异常;

导入Java。io。inputstream

导入Java。io。输出流;

导入javax。servlet。servlet上下文;

导入javax。servlet。servlet异常;

导入javax。servlet。http。http servlet

导入javax。servlet。http。http servlet请求;

导入javax。servlet。http。http servlet响应;

公共类文件视图扩展HttpServlet {

private static final long serialVersionUID=1L;

//设定输出的类型

private static final String GIF=' image/GIF;charset=UTF-8 ';

私有静态最终字符串JPG=' image/JPEG;charset=UTF-8 ';

私有静态最终字符串PNG=' image/PNG;charset=UTF-8 ';

私有静态最终字符串PDF=' application/PDF;charset=UTF-8 ';

private static final String ZIP=' application/ZIP;charset=UTF-8 ';

受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)

引发ServletException,IOException {

this.doPost(请求,响应);

}

/**

* 处理文件查看的邮政

* @抛出IOException

* @预防措施下方的类名出自包导入org。阿帕奇。公地。文件上传。*

*/

受保护的void doPost(HttpServletRequest请求,HttpServletResponse响应)

引发ServletException,IOException {

//文件流

输入流为=空

//输入缓冲流

BufferedInputStream bis=null

//得到输出流

输出流输出=空

//输出缓冲流

BufferedOutputStream bos=null

//1.设置参数编码

请求。setcharacterencoding(“UTF-8”);

//2.设置响应数据字符集

回应。setcharacterencoding(“UTF-8”);

//3.获取客户端请求参数:文件名

字符串文件名=请求。getparameter(' fileName ');

//4.重置反应

回应。reset();

//5.设置响应数据格式

if (fileName.endsWith(.gif')) {

回应。setcontenttype(GIF);

} else if (fileName.endsWith(.jpg')) {

回应。setcontenttype(JPG);

} else if (fileName.endsWith(.png')) {

回应。setcontenttype(PNG);

} else if (fileName.endsWith(.pdf')) {

回应。setcontenttype(PDF);

} else if (fileName.endsWith(.gif')) {

回应。setcontenttype(GIF);

} else if (fileName.endsWith(.zip')) {

回应。setcontenttype(ZIP);

}

字符串文件路径=' we b-INF/upload files/' fileName;

//获取当前网应用程序

servlet上下文web app=this。get servlet context();

//6.获取指定文件上传的真实路径

文件路径=web app。getrealpath(文件路径);

//7.读取目标文件,通过反应将目标文件写到客户端

is=新文件inputstream(文件路径);

bis=new BufferedInputStream(is);

输出=响应。get output stream();

bos=新缓冲区输出流(输出);

字节数据[]=新字节[1024];//缓冲字节数

int size=bis。读(数据);

而(大小!=-1) {

bos.write(数据,0,大小);

size=bis.read(数据);

}

//关闭流

之二。close();

博斯。flush();//清空输出缓冲流

博斯。close();

输出。close();

}

}

文件下载代码(FileDownload.java文件)

包控制器.文件处理器

导入Java。io。文件输入流;

导入Java。io。io异常;

导入Java。io。inputstream

导入Java。io。输出流;

导入javax。servlet。servlet异常;

导入javax。servlet。http。http servlet

导入javax。servlet。http。http servlet请求;

导入javax。servlet。http。http servlet响应;

公共类文件下载扩展HttpServlet {

private static final long serialVersionUID=1L;

受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)

引发ServletException,IOException {

this.doPost(请求,响应);

}

/**

* 处理文件下载的邮政

* @抛出IOException

*/

受保护的void doPost(HttpServletRequest请求,HttpServletResponse响应)

引发ServletException,IOException {

//1.设置参数编码

请求。setcharacterencoding(“UTF-8”);

//设置响应数据字符集

回应。setcharacterencoding(“UTF-8”);

//1.获得请求文件名

字符串文件名=请求。getparameter(' fileName ');

//2.设置文件哑剧类型(指定要返回内容的类型)

回应。设置内容类型(getServletContext().getMimeType(文件名));

//3.设置内容处置(指定下载该文件时的文件名)

回应。设置标题('内容-处置','附件;fileName=' fileName);

//4.读取目标文件,通过反应将目标文件写到客户端

//4.1 获取目标文件的绝对路径

字符串文件路径=' we b-INF/upload files/' fileName;

文件路径=this。getservletcontext().获取真实路径(文件路径);

//4.2 读取文件

InputStream in=新文件InputStream(文件路径);

//4.3 输出文件

输出流out=响应。获取输出流();

//写文件

int n;

while ((n=in.read())!=-1) {

出去。写(n);

}

英寸close();

出去。close();

}

}

文件删除代码(FileDelete.java文件)

包控制器.文件处理器

导入Java。io。文件;

导入Java。io。文件输入流;

导入Java。io。io异常;

导入Java。io。inputstream

导入Java。io。输出流;

导入javax。servlet。servlet异常;

导入javax。servlet。http。http servlet

导入javax。servlet。http。http servlet请求;

导入javax。servlet。http。http servlet响应;

公共类文件删除扩展HttpServlet {

private static final long serialVersionUID=1L;

受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)

引发ServletException,IOException {

this.doPost(请求,响应);

}

/**

* 处理文件下载的邮政

* @抛出IOException

*/

受保护的void doPost(HttpServletRequest请求,HttpServletResponse响应)

引发ServletException,IOException {

//1.设置参数编码

请求。setcharacterencoding(“UTF-8”);

//设置响应数据字符集

回应。setcharacterencoding(“UTF-8”);

//2.获得请求文件名

字符串文件名=请求。getparameter(' fileName ');

//3.获取该文件所在路径

字符串文件路径=' we b-INF/upload files/' fileName;

文件路径=this。getservletcontext().获取真实路径(文件路径);

//4.在指定路径下创建指定名称的文件

文件删除文件=新文件(文件路径);

布尔标志=假;

字符串msg=

//5.判断该文件是否已存在

if (deleteFile.exists()) {

flag=删除文件。delete();

如果(标志){

msg='删除成功!';

}否则{

msg='删除失败!';

}

}否则{

msg='该文件不存在!';

}

//6.返回客户端操作信息

response.getWriter().打印(味精);

}

}

web.xml代码

?可扩展标记语言版本='1.0 '编码='UTF八号'?

我们B- app xmlns:xsi=' http://www。w3。org/2001/XML架构实例' xmlns=' http://Java。星期日com/XML/ns/javaee ' xsi:schema location=' http://Java。星期日com/XML/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd' ID=' web app _ ID '版本='2.5 '

显示名称演示_上传和下载/显示名称

上下文参数

param-name webapproot键/param-name

param-valueuploadAndDownload/param-value

/content-参数

!-处理文件的Servlet -

!-文件上传开始-

小型应用程序

servlet名称上传/servlet-name

!-配置处理文件上传的Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)类-

servlet类控制器。文件处理程序。文件上传/servlet-class

/servlet

小型应用程序映射

servlet名称上传/servlet-name

!-设置文件上传请求路径-

URL-模式/上传文件。do/URL模式

/servlet-映射

!表示"受到某种对待的人":股息|牧师文件上传-

!-文件预览开始-

小型应用程序

servlet名称视图/servlet-name

!-配置处理文件预览的Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)类-

servlet-classcontroller.fileHandler.FileView/servlet-class

/servlet

小型应用程序映射

servlet名称视图/servlet-name

!-设置文件预览请求路径-

URL-模式/视图文件。do/URL模式

/servlet-映射

!表示"受到某种对待的人":股息|牧师文件预览-

!-文件下载开始-

小型应用程序

servlet名称下载/servlet-name

!-配置处理文件下载的Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)类-

servlet类控制器。文件处理程序。文件下载/servlet类

/servlet

小型应用程序映射

servlet名称下载/servlet-name

!-设置文件下载请求路径-

URL特征码/下载文件。do/URL模式

/servlet-映射

!表示"受到某种对待的人":股息|牧师文件下载-

!-文件删除开始-

小型应用程序

servlet名称删除/servlet-name

!-配置处理文件删除的Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)类-

servlet类控制器。文件处理程序。文件删除/servlet类

/servlet

小型应用程序映射

servlet名称删除/servlet-name

!-设置文件删除请求路径-

全球资源定位器(Uniform Resource Locator)模式/删除文件/url模式

/servlet-映射

!表示"受到某种对待的人":股息|牧师文件删除-

欢迎文件列表

welcome-fileindex.html/welcome-file

welcome-fileindex.htm/welcome-file

welcome-fileindex.jsp/welcome-file

welcome-filedefault.html/welcome-file

welcome-filedefault.htm/welcome-file

welcome-filedefault.jsp/welcome-file

/welcome-file-list

/网络应用

2.3 代码优化

处理文件查看(FileView.java),设置响应文件类型,可以用下面这句话替换

回应。设置内容类型(getServletContext().”getMimeType(文件名)”;charset=UTF-8 ');

一、准备工作:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • word文档无法编辑是怎么回事-
  • 华为手机怎么设置返回键(华为手机下面的三个按键设置方法)
  • lumia950怎么样(Lumia950体验分享)
  • otg连接是什么意思(OTG连接手机方法)
  • 笔记本触摸板怎么右键(笔记本电脑触控板手势操作设置)
  • 真我x7怎么样(realme X7 系列体验)
  • 苹果的A16处理器有多强(苹果的A16处理器的介绍)
  • 小米互传怎么用(小米手机的连接与共享教程)
  • 怎么设置电脑桌面图标自动对齐 设置电脑桌面自动整理图标的方法
  • 宽带错误651最简单解决方法(处理宽带错误651的措施)
  • 大学生手机有什么推荐(大学生换手机攻略)
  • 天玑1100和骁龙778g哪个好(骁龙778G、天玑900、天玑1100购选建议)
  • yum update 升级报错的解决办法
  • Windows10禁用屏保教程
  • 连接wifi显示无互联网连接怎么办(无线连上了却不能上网处理绝招)
  • 留言与评论(共有 条评论)
       
    验证码: