这篇文章主要为大家详细介绍了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 {
//将您的代码放在这里
}
}
运行示例
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。