fileupload控件上传图片,fileupload实现多文件上传

fileupload控件上传图片,fileupload实现多文件上传,使用fileupload组件实现文件上传功能

这篇文章主要为大家详细介绍了使用文件上传实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

FileUpload文件上传

文件上传是街头流氓的英国国会下院组件提供的上传组件,它最主要的工作就是帮我们解析request.getInpustream()。

使用文件上传组件首先需要引入两个冲突包:

公共-文件上传。冲突

commons-io.jar

文件上传的核心类有DiskFileItemFactory、ServletFileUpload、FileItem。

使用fileUpload固定步骤:

创建工厂类:DiskFileItemFactory factory=new DiskFileItemFactory();

创建解析器:servlet文件上传上传=新servlet文件上传(工厂);

使用解析器解析请求对象:List list=upload.parseRequest(请求);

一个FileItem对象对应一个表单项。FileItem类有如下方法:

String getFieldName():获取表单项的名字的属性值。

String getName():获取文件字段的文件名。如果是普通字段,则返回空

String getString():获取字段的内容。如果是普通字段,则是它的价值值;如果是文件字段,则是文件内容。

String getContentType():获取上传的文件类型,例如文本/纯文本、图像。如果是普通字段,则返回零。

long getSize():获取字段内容的大小,单位是字节。

布尔型isFormField():判断是否是普通表单字段,若是,返回没错,否则返回错误。

InputStream getInputStream():获得文件内容的输入流。如果是普通字段,则返回价值值的输入流。

前端页面

% @ page language=' Java ' content type=' text/html;charset=utf-8 '

pageEncoding='utf-8'%

!文档类型超文本标记语言

超文本标记语言

meta charset='utf-8 '

标题在此插入标题/标题

/头

身体

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

输入类型='文本'名称='用户名'

输入类型='密码'名称='密码'

输入类型='文件'名称='图片'

输入类型='提交'

/表单

/body

/html

UploadServlet

包pers。张。servlet

导入Java。io。文件;

导入Java。io。io异常;

导入Java。util。列表;

导入Java。util。uuid

导入javax。servlet。servlet异常;

导入javax。servlet。http。http servlet

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

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

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

导入组织。阿帕奇。公地。文件上传。磁盘。磁盘fileitemfactory

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

公共类UploadServlet扩展HttpServlet {

受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)引发ServletException,IOException {

doPost(请求、响应);

}

受保护的void doPost(HttpServletRequest请求,HttpServletResponse响应)引发ServletException,IOException {

DiskFileItemFactory factory=new DiskFileItemFactory();

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

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

//文件名中文乱码处理也可以如此写

//上传。setheaderencoding(' utf-8 ');

//设置缓冲区大小与临时文件目录

工厂。setsize阈值(1024 * 1024 * 10);

文件上传temp=新文件(' e:\ \上传temp ');

上传温度。mkdirs();

工厂。设置存储库(上传临时);

//设置单个文件大小限制

上传。setfilesizemax(1024 * 1024 * 10);

//设置所有文件总和大小限制

上传。setsizemax(1024 * 1024 * 30);

尝试{

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

系统。出去。println(列表);

for (FileItem fileItem:list){

如果(!fileitem。是formfield()fileitem。getname()!=null!''.等于(fileitem。getname()){

string filName=fileitem。getname();

//利用UUID生成伪随机字符串,作为文件名避免重复

String uuid=UUID.randomUUID().toString();

//获取文件后缀名

字符串后缀=filname。子串(filname。lastindexof(' . '));

//获取文件上传目录路径,在项目部署路径下的上传目录里。若想让浏览器不能直接访问到图片,可以放在WEB-INF下

string upload path=request . getsession()。getServletContext()。get real path('/upload ');

File file=新文件(upload path);

file . mkdirs();

//将文件写入磁盘。在这一行执行之后,如果有任何临时文件,它将被自动删除。

fileItem.write(新文件(uploadPath,uuid后缀));

}

}

} catch(异常e) {

e . printstacktrace();

}

}

}

测试

控制台打印:

复制代码如下:【name=null,store location=e:\ upload temp \ upload _ 9e 72474 _ 16 ddcc cabe 6 _ _ 8000 _ 000000 . tmp,size=5字节,isform field=true,fieldname=username,name=null,store location=e:\ upload temp \ upload _ 9e 72474 _ 16 ddcc cabe 6 _ _ 8000 _ 000001 . tmp,size=6字节,isform field=

项目部署路径下的上传文件夹:

除了以上方法,还要注意使用fileUpload组件实现文件上传:

中文文件名乱码处理:servlet fileupload.setheader编码(“UTF-8”)或request . setcharacter encoding(“UTF-8”);

常见表单域的中文乱码处理:新字符串(str。getbytes ("ISO-8859-1 "," UTF-8 "));

设置内存缓冲区的大小,默认为10kb:diskfileitemcfactory . setsize threshold(1024 * 1024);

指定临时文件目录。如果单个文件的大小超过了内存缓冲区,文件会被临时缓存在这个目录下:diskfileitemcfactory . set repository(file);

设置单个文件大小限制,如果一个文件超过这个大小,就会抛出一个fileuploadbase . filesizelimitexceedexception:servlet file upload . setfilesizemax(1024102410);

设置所有文件,即请求大小限制。如果文件之和超过这个大小,就会抛出fileuploadbase . sizelimitedexception:servlet file upload . setsizemax(1024102420);

使用UUID生成伪随机字符串作为文件名以避免重复:UUID.randomUUID()。toString();

将文件写入硬盘。写入后,系统会自动删除放置在临时文件目录中的文件:fileitem.write(新文件(路径,文件名));

另外:如果没有指定临时文件目录,默认采用系统默认的临时文件路径,可以通过system . getproperty(" Java . io . tmpdir ")获取。tomcat系统默认的临时目录是“Tomcat安装目录/temp/”。

Apache文件上传组件在解析上传数据中各个字段的内容时,需要临时保存解析后的数据,以便以后对数据进行进一步处理(保存在磁盘上的特定位置或者插入数据库)。因为Java虚拟机默认可以使用的内存空间是有限的,超过限制就会抛出“java.lang.OutOfMemoryError”错误。如果上传的文件很大,比如800M文件,文件的内容无法临时保存在内存中,那么Apache文件上传组件就用临时文件来代替保存数据;但如果上传的文件很小,比如600字节的文件,显然直接存储在内存中性能会更好。

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

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

相关文章阅读

  • swf upload,fileupload控件上传文件
  • swf upload,fileupload控件上传文件,文件上传插件SWFUpload的使用指南
  • fileupload控件上传图片,fileupload实现多文件上传,使用fileupload组件实现文件上传功能
  • filereader blob,js下载文件到本地 blob
  • filereader blob,js下载文件到本地 blob,js利用FileReader读取本地文件或者blob方式
  • fileitem获取文件名,fileitem.write
  • fileitem获取文件名,fileitem.write,浅谈FileItem类的常用方法
  • dockerfile cmd enterpoint,docker run cmd entrypoint的区别
  • dockerfile cmd enterpoint,docker run cmd entrypoint的区别,Dockerfile中ENTRYPOINT 和 CMD的区别说明
  • asp fileupload,
  • asp fileupload,,aspupload 3.0 下载与使用集锦
  • apache任意文件上传,apache服务器上传文件,Apache commons fileupload文件上传实例讲解
  • ,,聊聊MultipartFile与File的一些事儿
  • ,,病毒Autorun.inf、pagefile.pif等的解决办法
  • ,,File.createTempFile创建临时文件的示例详解
  • 留言与评论(共有 条评论)
       
    验证码: