apache任意文件上传,apache服务器上传文件

apache任意文件上传,apache服务器上传文件,Apache commons fileupload文件上传实例讲解

这篇文章主要为大家详细介绍了Apache commons文件上传文件上传实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

文件上传的方法主要目前有两个常用的,一个是

SmartUpload

,一个是街头流氓的

Commons fileupload

.

我们这里主要介绍下第二个的用法,首先要上传文件,注意几个问题:

一表格表单内,要添加空间输入类型=文件名称=我的文件

2表格表单的内容格式要定义成多部分/表单数据格式

3需要类库:1 commons-io。jar 2 commons-文件上传-1。3 .1 .冲突

接下来我们看下用法。

首先阅读Apache commons文件上传的官方文档可以发现下面几个常用的函数:

一创建文件解析对象

复制代码代码如下:DiskFileUpload DiskFileUpload=new DiskFileUpload();

2进行文件解析后放在目录中,因为这个类库支持多个文件上传,因此把结果会存在目录中。

复制代码代码如下:ListFileItem list=disk file upload。解析请求(请求);

3获取上传文件,进行分析(不是必须)

复制代码代码如下:File remoteFile=新文件(新字符串(fileItem.getName().getBytes(), UTF-8 );

四创建新对象,进行流拷贝

文件1=新文件(this.getServletContext().getRealPath(attachment ),远程文件。getname());

file1.getParentFile().mkdirs();

文件1。创建新文件();

InputStream ins=fileitem。getinputstream();

输出流ou=新文件输出流(文件1);

尝试{

字节[]缓冲区=新字节[1024];

int len=0;

while((len=ins.read(buffer)) -1)

ous.write(buffer,0,len);

out.println(以保存文件文件1。getabsolutepath() br/);

}最后{

欧斯。close();

移民局。close();

}

这样我们就完成了文件的上传。

fileUpload.html

表单操作= servlet/上传servlet 方法= post enctype= multipart/form-data

div align=center

字段集样式=宽度:80%

神话;传奇上传文件/legendbr/

div align=left 上传文件1/格

div align=left

输入类型=文件名称=文件1/

/div

div align=left 上传文件2/格

div align=left

输入类型=文件名称=文件2/

/div

差异

div align=left 上传文件说明1/格

div align= left input type= text name= description 1 //div

/div

差异

div align=left 上传文件说明2/格

div align= left input type= text name= description 2 //div

/div

差异

div align=left

输入类型=提交值=上传文件/

/div

/div

/字段集

/div

/表单

web.xml

小型应用程序

servlet-name上传servlet/servlet-name

servlet-classcom.test.hello.UploadServlet/servlet-class

/servlet

小型应用程序映射

servlet-name上传servlet/servlet-name

全球资源定位器(Uniform Resource Locator)模式/servlet/UploadServlet/url模式

/servlet-映射

UploadServlet.java

包com。测试。你好;

导入Java。io。文件;

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

导入Java。io。io异常;

导入Java。io。inputstream

导入Java。io。输出流;

导入Java。io。版画家;

导入Java。util。列表;

导入javax。servlet。servlet异常;

导入javax。servlet。http。http servlet

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

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

导入org。阿帕奇。公地。文件上传。diskfileupload

导入org。阿帕奇。公地。文件上传。文件项目;

导入组织。阿帕奇。公地。文件上传。文件上传异常;

公共类UploadServlet扩展HttpServlet {

/**

*对象的构造函数。

*/

公共UploadServlet() {

super();

}

/**

小型应用程序的破坏。英国铁路公司

*/

public void destroy() {

超级棒。destroy();//只将“摧毁”字符串放入日志中

//将您的代码放在这里

}

/**

小型应用程序的多吉特方法。英国铁路公司

*

*当表单的标记值等于得到时,调用此方法。

*

* @param请求客户端向服务器发送的请求

* @param响应服务器发送给客户端的响应

* @发生错误时抛出ServletException

* @发生错误时抛出IOException

*/

公共void doGet(HttpServletRequest请求,HttpServletResponse响应)

引发ServletException,IOException {

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

response.getWriter().println(请以邮政方式上传文件);

}

/**

小型应用程序的doPost方法。英国铁路公司

*

*当表单的标记值方法等于邮政时,调用此方法。

*

* @param请求客户端向服务器发送的请求

* @param响应服务器发送给客户端的响应

* @发生错误时抛出ServletException

* @发生错误时抛出IOException

*/

@SuppressWarnings({ unchecked , deprecation })

公共void doPost(http servlet请求请求,HttpServletResponse响应)

引发ServletException,IOException {

文件文件1=空,文件2=空

字符串描述1=空,描述2=空.

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

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

回应。设置内容类型(“文本/html”);

PrintWriter out=响应。getwriter();

DiskFileUpload DiskFileUpload=new DiskFileUpload();

尝试{

ListFileItem list=disk file upload。解析请求(请求);

out.println(遍历所有的FileItem.br/);

for(FileItem fileItem : list){

if(fileItem.isFormField()){

如果(描述1 。等于(fileitem。获取字段名()){

out.println(遍历到描述一.br/);

描述1=新字符串(fileItem.getString().getBytes(), UTF-8 );

}

如果(描述2 。等于(fileitem。获取字段名()){

out.println(遍历到描述2.br/);

描述2=新字符串(fileItem.getString().getBytes(), UTF-8 );

}

}否则{

if(文件1 ).等于(fileitem。获取字段名()){

File remoteFile=新文件(新字符串(fileItem.getName().getBytes(), UTF-8 );

out.println(遍历到文件一.br/);

out.println(客户端文件位置:远程文件。getabsolutepath() br/);

文件1=新文件(this.getServletContext().getRealPath(attachment ),远程文件。getname());

file1.getParentFile().mkdirs();

文件1。创建新文件();

InputStream ins=fileitem。getinputstream();

输出流ou=新文件输出流(文件1);

尝试{

字节[]缓冲区=新字节[1024];

int len=0;

while((len=ins.read(buffer)) -1)

ous.write(buffer,0,len);

out.println(以保存文件文件1。getabsolutepath() br/);

}最后{

欧斯。close();

移民局。close();

}

}

if(file2 ).等于(fileitem。获取字段名()){

File remoteFile=新文件(新字符串(fileItem.getName().getBytes(), UTF-8 );

out.println(遍历到文件2.br/);

out.println(客户端文件位置:远程文件。getabsolutepath() br/);

文件2=新文件(this.getServletContext().getRealPath(attachment ),远程文件。getname());

file2.getParentFile().mkdirs();

文件2。创建新文件();

InputStream ins=fileitem。getinputstream();

输出流ou=新文件输出流(文件2);

尝试{

字节[]缓冲区=新字节[1024];

int len=0;

while((len=ins.read(buffer)) -1)

ous.write(buffer,0,len);

out.println(以保存文件文件2。getabsolutepath() br/);

}最后{

欧斯。close();

移民局。close();

}

}

}

out.println(请求解析完毕br/br/);

}

}catch(FileUploadException e){}

out.println(!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN );

出去。println( HTML );

出去。println( HEAD TITLE a Servlet/TITLE/HEAD );

出去。println( BODY );

if(file1!=null){

出去。println( div );

出去。println( div align= left file 1;/div’);

出去。println( div align= left a href= 请求。getcontextpath()/attachment/

文件1。getname() target=_ blank 文件1。getname()/a );

出去。println(/div );

出去。println(/div );

}

if(file2!=null){

出去。println( div );

出去。println( div align= left file 2;/div’);

出去。println( div align= left a href= 请求。getcontextpath()/attachment/

文件2。getname() target=_ blank 文件2。getname()/a );

出去。println(/div );

出去。println(/div );

}

出去。println( div );

出去。println( div align= left description 1:/div );

出去。println( div align= left );

out.println(描述1);

出去。println(/div );

出去。println(/div );

出去。println( div );

出去。println( div align= left description 2:/div );

出去。println( div align= left );

out.println(描述2);

出去。println(/div );

出去。println(/div );

出去。println(/BODY );

出去。println(/HTML );

出去。flush();

出去。close();

}

/**

小型应用程序的初始化。英国铁路公司

*

* @发生错误时抛出ServletException

*/

公共void init()引发ServletException {

//将您的代码放在这里

}

}

运行示例

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

apache任意文件上传,apache服务器上传文件