美文网首页
文件上传(学习笔记)

文件上传(学习笔记)

作者: secondtown | 来源:发表于2018-09-17 16:48 被阅读2次

应用案例——文件上传

form.html + UploadServlet
  通过该案例了解文件上传时服务器如何获取表单传送的文件信息。
  案例使用了form.html而非.jsp来进行展示,说明不需要展示动态页面,而且如果UploadServlet中有内容需要展示在浏览器中,那么是通过输入输出流的方式在浏览器中进行显示。
  正如上面分析,form.html内容很简单,

<form action="UploadServlet" method="post" enctype="multipart/form-data">
    ...
    <td>上传者</td>
    <td><input type="text" name="name"></td>
    ...
    <td>上传文件</td>
    <td><input type="file" name="myfile"></td>
    ...
</form>

  在上传文件的输入框旁边现在就多了一个浏览...的按钮用于选择文件夹,当点击上传按钮就会跳转到UploadServlet。此时,无论是表单中的文本name还是表单myfile都会被保存到request中的消息体中。
  这个消息体需要进行处理,首先登场的是DiskFIleItemFactory类。它的最终目的是将消息实体中的每一个文件封装成单独的FileItem对象(但是案例中实现该功能的确实ServletFileUpload这个类)。FileItem对象中可能保存的是文本,也可能保存的是文件,我们可以通过isFormField()方法来区分,并根据结果来进行区分操作。

DiskFileItemFactory factory = new DiskFileItemFactory();

//将上传文件以临时文件形式保存在路径f中。
File f = new File("e:\Target");
//为了突出重点,这里假设该路径存在,不进行检测
factory.setRepository(f);

ServletFileUpload fileupload= new ServletFileUpload(factory);
fileupload.setHeaderEncoding("gbk");
List<FileItem>fileitems = fileupload.parseRequest(request);

  梳理一下上面这段代码,最核心的类是ServletFileUpload,它的实例是fileupload。它分为有参数和无参数两种构造方法,这里使用的是有参数的构造方法。使用一个DiskFileItemFactory类的实例对象作为参数。然后再调用parseRequest()方法来将消息实体中的每一个文件封装成单独的FileItem对象。
  接下来对fileitems进行判断,如果是文件而非普通字段,那么可以通过getName()方法获得文件名:

if (! fileitem.isFormField()){
    String filename = fileitem.getName();
    ...
}

相关文章

  • 文件上传(学习笔记)

    应用案例——文件上传 form.html + UploadServlet  通过该案例了解文件上传时服务器如何获取...

  • Web文件上传

    以前博客 学习文件上传笔记,在github上看见一个文件上传练习平台,自己搭一个平台练习。 准备 下载文件git ...

  • NSURLSession笔记(一) 文件下载、断点下载

    qNSURLSession系列笔记:NSURLSession笔记 上传文件 使用NSURLSession下载文件 ...

  • DVWA-File Upload(文件上传)

    本系列文集:DVWA学习笔记 文件上传漏洞通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以...

  • 文件上传漏洞 学习笔记

    什么是文件上传漏洞? 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其...

  • Node.js基础入门05

    node笔记 --祈粼 用formidable上传文件

  • python爬虫day-12(requests库高级用法)

    个人学习笔记,方便自己查阅,仅供参考,欢迎交流 2.requests库高级用法 1.文件上传 若有的网站需要上传文...

  • 2022-04-13_有赞表单组件van-uploader文件上

    20220413_有赞表单组件van-uploader文件上传前后台学习笔记 1概述 van-uploader用于...

  • 文件上传笔记

    客户端绕过 上传一个PHP文件 点开网络查看 下面未有请求(同时弹窗说文件不合法) 这时候需要抓包 改包里的文件格...

  • Django学习之旅(五)

    按照上篇文章的计划,本文应当讲解文件上传功能的用法。但在学习文件上传之前,我们有必要学习下表单。因为文件上传经常以...

网友评论

      本文标题:文件上传(学习笔记)

      本文链接:https://www.haomeiwen.com/subject/qefrnftx.html