文件上传
发布日期:2021-07-12 08:49:25 浏览次数:4 分类:技术文章

本文共 2023 字,大约阅读时间需要 6 分钟。

1.文件上传时,表单需要做的准备

1).请求方式为 POST 

2).使用file的表单域:<input type="file" name="file"/>

3).设置编码方式 enctype="multipart/form-data"  表单以二进制方式进行传输

  当修改编码方式后,后台不能再用 request.getParameter(),获取前台页面参数,获取不到。

  可以使用输入流的方式来获取,但不建议这么做。

  具体使用 commons-fileupload 组件完成问价上传

 I .搭建环境:

加入jar

commons-fileupload-1.2.1.jar

commons-io-2.0.jar

II.基本思想:

>commons-fileupload 可以解析请求,得到一个FileItem 对象组成的List

>commons-fileupload 把所有的请求信息都解析为FileItem对象,无论是一个一般的文本域还是一个文件域.

>可以调用FileItem的isFormField()方法来判断是一个 表单域 或不是表单域(则是一个文本域)

可以参看 用户指导 和 api文档

/commons-fileupload-1.2.1-bin/commons-fileupload-1.2.1/site/using.html

/commons-fileupload-1.2.1-bin/commons-fileupload-1.2.1/site/apidocs/index.html

 

// Process a regular form fieldif (item.isFormField()) {    String name = item.getFieldName();    String value = item.getString();    ...}
// Process a file uploadif (!item.isFormField()) {    String fieldName = item.getFieldName();    String fileName = item.getName();    String contentType = item.getContentType();    boolean isInMemory = item.isInMemory();    long sizeInBytes = item.getSize();    ...}

III.如何得到List<FileItem>

  >简单方式

// Create a factory for disk-based file itemsFileItemFactory factory = new DiskFileItemFactory();// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);// Parse the requestList /* FileItem */ items = upload.parseRequest(request);

  >复杂方式:可以为文件上传添加一些限制添加和属性

// Create a factory for disk-based file itemsDiskFileItemFactory factory = new DiskFileItemFactory();// Set factory constraints //设置内存中最多可以存放的上传文件的大小,若超出则把文件写到一个临时的文件夹中,以byte为单位factory.setSizeThreshold(yourMaxMemorySize);factory.setRepository(yourTempDirectory);// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);// Set overall request size constraint  设置总的不能超过的大小,也可以设置单个文件的大小
// public void setFileSizeMax(long fileSizeMax)
upload.setSizeMax(yourMaxRequestSize); // Parse the request List /* FileItem */ items = upload.parseRequest(request);

 

 

 

 

 

转载于:https://www.cnblogs.com/wq3435/p/5237113.html

转载地址:https://blog.csdn.net/ankan7400/article/details/102088950 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JavaWEB 通过Listener理解域对象生命周期
下一篇:ActiveMQ发消息和收消息

发表评论

最新留言

很好
[***.229.124.182]2024年04月22日 03时44分48秒