java文件的上传与下载Word文件下载.docx
《java文件的上传与下载Word文件下载.docx》由会员分享,可在线阅读,更多相关《java文件的上传与下载Word文件下载.docx(28页珍藏版)》请在冰点文库上搜索。
/body>
/html>
2
upload<
<
formname="
frm_test"
action="
${pageContext.request.contextPath}/upload"
method="
post"
enctype="
multipart/form-data"
用户名:
inputtype="
text"
name="
userName"
br/>
文件:
file"
file_img"
<
submit"
value="
注册"
/form>
SRC
packagecn.itcast._a_upload;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.UnsupportedEncodingException;
importjava.util.List;
importjava.util.UUID;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importmons.fileupload.FileItem;
importmons.fileupload.FileItemFactory;
importmons.fileupload.FileUploadException;
importmons.fileupload.disk.DiskFileItemFactory;
importmons.fileupload.servlet.ServletFileUpload;
importmons.io.FileUtils;
publicclassUploadServletextendsHttpServlet{
//upload目录,保存上传的资源
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
/*********文件上传组件:
处理文件上传************/
try{
//1.文件上传工厂
FileItemFactoryfactory=newDiskFileItemFactory();
//2.创建文件上传核心工具类
ServletFileUploadupload=newServletFileUpload(factory);
//一、设置单个文件允许的最大的大小:
30M
upload.setFileSizeMax(30*1024*1024);
//二、设置文件上传表单允许的总大小:
80M
upload.setSizeMax(80*1024*1024);
//三、设置上传表单文件名的编码
//相当于:
request.setCharacterEncoding("
);
upload.setHeaderEncoding("
//3.判断:
当前表单是否为文件上传表单
if(upload.isMultipartContent(request)){
//4.把请求数据转换为一个个FileItem对象,再用集合封装
List<
FileItem>
list=upload.parseRequest(request);
//遍历:
得到每一个上传的数据
for(FileItemitem:
list){
//判断:
普通文本数据
if(item.isFormField()){
//普通文本数据
StringfieldName=item.getFieldName();
//表单元素名称
Stringcontent=item.getString();
//表单元素名称,对应的数据
//item.getString("
指定编码
System.out.println(fieldName+"
"
+content);
}
//上传文件(文件流)---->
上传到upload目录下
else{
Stringname=item.getName();
//文件名
Stringtype=item.getContentType();
//文件类型
InputStreamin=item.getInputStream();
//上传文件流
/*
*四、文件名重名
*对于不同用户readme.txt文件,不希望覆盖!
*后台处理:
给用户添加一个唯一标记!
*/
//a.随机生成一个唯一标记
Stringid=UUID.randomUUID().toString();
//b.与文件名拼接
name=id+"
#"
+name;
//获取上传基路径
Stringpath=getServletContext().getRealPath("
/upload"
//创建目标文件
Filefile=newFile(path,name);
//工具类,文件上传
item.write(file);
item.delete();
//删除系统产生的临时文件
System.out.println();
}
}
else{
System.out.println("
当前表单不是文件上传表单,处理失败!
"
}catch(Exceptione){
e.printStackTrace();
}
}
//手动实现过程
privatevoidupload(HttpServletRequestrequest)throwsIOException,
UnsupportedEncodingException{
/*
request.getParameter("
//GET/POST
request.getQueryString();
//获取GET提交的数据
request.getInputStream();
//获取post提交的数据*/
/***********手动获取文件上传表单数据************/
//1.获取表单数据流
InputStreamin=request.getInputStream();
//2.转换流
InputStreamReaderinStream=newInputStreamReader(in,"
//3.缓冲流
BufferedReaderreader=newBufferedReader(inStream);
//输出数据
Stringstr=null;
while((str=reader.readLine())!
=null){
System.out.println(str);
//关闭
reader.close();
inStream.close();
in.close();
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
this.doGet(request,response);
}
%@tagliburi="
prefix="
c"
%>
下载列表<
tableborder="
1"
align="
center"
tr>
th>
序号<
/th>
文件名<
操作<
/tr>
c:
forEachvar="
en"
items="
${requestScope.fileNames}"
varStatus="
vs"
<
td>
${vs.count}<
/td>
${en.value}<
<
%--<
ahref="
${pageContext.request.contextPath}/fileServlet?
method=down&
.."
下载<
/a>
--%>
--构建一个地址-->
urlvar="
url"
fileServlet"
<
paramname="
method"
down"
/c:
param>
fileName"
${en.key}"
url>
--使用上面地址-->
${url}"
forEach>
/table>
${pageContext.request.contextPath}/upload.jsp"
文件上传<
&
nbsp;
&
method=downList"
文件下载<
3
method=upload"
hidden"
upload"
提交"
packagecn.itcast.servlet;
importjava.io.OutputStream;
import.URLEncoder;
importjava.util.HashMap;
importjava.util.Map;
/**
*处理文件上传与下载
*@authorJie.Yuan
*
*/
publicclassFileServletextendsHttpServlet{
//获取请求参数:
区分不同的操作类型
Stringmethod=request.getParameter("
if("
.equals(method)){
//上传
upload(request,response);
elseif("
downList"
//进入下载列表
downList(request,response);
//下载
down(request,response);
/**
*1.上传
privatevoidupload(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//1.创建工厂对象
//2.文件上传核心工具类
//设置大小限制参数
upload.setFileSizeMax(10*1024*1024);
//单个文件大小限制
upload.setSizeMax(50*1024*1024);
//总文件大小限制
//对中文文件编码处理
//判断
if(upload.isMultipartContent(request)){
//3.把请求数据转换为list集合
//遍历
for(FileItemitem:
//获取名称
Stringname=item.getFieldName();
//获取值
Stringvalue=item.getString();
System.out.println(value);
}
//文件表单项
/********文件上传***********/
//a.获取文件名称
//----处理上传文件名重名问题----
//a1.先得到唯一标记
//a2.拼接文件名
name=id+"
+name;
//b.得到上传目录
StringbasePath=getServletContext().getRealPath("
//c.创建要上传的文件对象
Filefile=newFile(basePath,name);
//d.上传
//删除组件运行时产生的临时文件
}catch(Except