前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >servlet实现文件上传功能

servlet实现文件上传功能

作者头像
Java学习
发布2018-04-16 10:47:13
9630
发布2018-04-16 10:47:13
举报
文章被收录于专栏:java学习java学习

最新通知

●回复"每日一练"获取以前的题目!

●【新】Android视频更新了!(回复【安卓视频】获取下载链接)

●【新】Ajax知识点视频更新了!(回复【学习视频】获取下载链接)

●【新】HTML5知识点视频更新了!(回复【前端资料】获取下载链接)

●答案公布时间:为每期发布题目的第二天

★【新】回复“测试题”获取昨天发布的软件工程师初级阶段测试题答案

★【新】回复“学习资料”获取java学习电子文档

★【新】需要求职简历模板的可以加小编微信xxf960513

聊天系统

●我希望大家积极参与答题!有什么不懂可以加小编微信进行讨论

★珍惜每一天,拼搏每一天,专心每一天,成功每一

如果你是初学者,或者是自学者!你可以加小编微信!小编可以给你建议以及给你提供学习资料!你在学习上有什么问题都可以咨询小编!小编都会为你解答!注:本公众号纯属个人公众号!不存在任何培训机构招生信息

第一步:

1导入第三方包(commons-io-2.1.jar)(commons-fileupload-1.2.2.jar)

第二步:写好页面然后修改<form>表单enctype="multipart/form-data"属性(包含文件的表单都必须用这个属性 )

<%@ page language="java" import="java.util.*"pageEncoding="UTF-8"%>

<%

Stringpath = request.getContextPath();

StringbasePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN">

<html>

<head>

<title>文件上传</title>

<meta name="keywords"content="keyword1,keyword2,keyword3">

<meta name="description"content="this is my page">

<meta name="content-type"content="text/html; charset=UTF-8">

<!--<link rel="stylesheet"type="text/css" href="./styles.css">-->

</head>

<body>

<form action="UploadServlet"method="post" enctype="multipart/form-data">

<table width="600px">

<tr>

<td>上传者</td>

<td><input type="text"name="name"></td>

</tr>

<tr>

<td>上传文件</td>

<td><input type="file"name="myfile"></td>

</tr>

<tr>

<td colspan="2"> <input type="submit"value="上传"/></td>

</tr>

</table>

</form>

</body>

</html>


第三步:写servlet(UploadServlet.java)

packagecom.example.servlet;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.OutputStream;

importjava.io.PrintWriter;

importjava.util.List;

importjava.util.UUID;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.commons.fileupload.FileItem;

importorg.apache.commons.fileupload.FileUploadException;

importorg.apache.commons.fileupload.disk.DiskFileItemFactory;

importorg.apache.commons.fileupload.servlet.ServletFileUpload;

publicclass UploadServlet extends HttpServlet {

@Override

protectedvoiddoGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

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

try {

// 创建工厂

DiskFileItemFactory factory = new DiskFileItemFactory();

File f = new File("/File");

if (!f.exists()) {

f.mkdir();

}

// 设置文件的缓存路径

factory.setRepository(f);

// 创建fileupload组件

ServletFileUpload fileUpload = new ServletFileUpload(factory);

fileUpload.setHeaderEncoding("gbk");

// 解析request

List<FileItem> fileItems =fileUpload.parseRequest(req);

PrintWriter write=resp.getWriter();

//遍历集合

for (FileItem fileItem : fileItems) {

if (fileItem.isFormField()) {//判断是否为普通字段

//获取字段名和字段值

String name=fileItem.getFieldName();

Stringvalue=fileItem.getString("gbk");

write.println("上传者:"+value);

}else{

//上传文件路径

Stringfilename=fileItem.getName();

write.println("文件来源:"+filename);

//截取文件名

filename =filename.substring(filename.lastIndexOf("\\")+1);

write.println("成功上传的文件:"+filename);

//文件名唯一

filename = UUID.randomUUID().toString()+"_"+filename;

//在服务器创建同名文件

String webPath="/File/";

Stringfilepath=getServletContext().getRealPath(webPath+filename);

//创建文件

File file = new File(filepath);

file.getParentFile().mkdirs();

file.createNewFile();

//获得上传文件流

InputStreamin=fileItem.getInputStream();

//获得写入文件流

OutputStream out=new FileOutputStream(file);

//

byte[] buffer =newbyte[1024];

int len ;

while((len = in.read(buffer))>0){

out.write(buffer,0,len);

}

//关闭流

in.close();

out.close();

//删除临时文件

fileItem.delete();

}

}

} catch (FileUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@Override

protectedvoiddoPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGet(req, resp);

}

}


第四步:配置web.xml

<?xml version="1.0"encoding="UTF-8"?>

<web-app version="2.5"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<display-name></display-name>

<servlet>

<servlet-name>UploadServlet</servlet-name>

<servlet-class>com.example.servlet.UploadServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>UploadServlet</servlet-name>

<url-pattern>/UploadServlet</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>


第五步:Tomcat部署项目!运行上传文件!

第六步:上传成功!

第七步查看已经上传成功的文件:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档