文件的上传和下载学习小结

简介: 文件的上传和下载学习小结一、文件上传 客户端通过浏览器将文件上传至服务器。 对于我们写代码来说,就是IO操作。二、实现文件上传 对表单有什么要求? 1. 提交方式必须为post 2. enctype="multipart/form-data" 3. 对于服务器的servlet有什么要求? request.getParameter("name"); 不能用该方式获取表单数据了,若非要用,则返回null。

文件的上传和下载学习小结

一、文件上传
客户端通过浏览器将文件上传至服务器。 对于我们写代码来说,就是IO操作。 二、实现文件上传 对表单有什么要求?
1. 提交方式必须为post 2. enctype="multipart/form-data" 3. <input type="file" name="photo"/> 对于服务器的servlet有什么要求? request.getParameter("name"); 不能用该方式获取表单数据了,若非要用,则返回null。 request.getInputStream(); 使用字节输入流获取数据了。 数据能够获取到了,但是需要解析。大神可以自己解析(就是一顿切割、取值)! 对于小小牛的我,使用 Apache 开源组织提供了一个用来处理表单文件上传的一个开源组件( Commons-fileupload ),它最主要的工作就是帮我们解析request.getInputStream()。 该组件性能优异,并且其API使用极其简单,可以让开发人员轻松实现web文件上传功能,因此在web开发中实现文件上传功能,通常使用Commons-fileupload组件实现。 Commons-fileupload commons-fileupload.jar commons-io.jar

        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload sfu = new ServletFileUpload();
        List<FileItem> fileItems = sfu.parseRequest(request);
        
        FileItem接口的方法:
            isFormFiled();        判断当前字段是否是普通文本字段,如果返回false,则说明是文件字段。
            getFileName();        获取字段名,例如:< input type="text" name="username" />,返回的是username。
            getString("UTF-8");   获取字段值,并解决上传普通文本表单出的乱码问题,如果是文件字段,那么获取的是文件内容,当然上传的文件必须是文本文件。
            
            getInputStream();     获取上传文件对应的输入流。
            getName();            获取文件字段的文件名称(如:a.txt)。
            getContentType();     获取上传的文件的MIME类型,例如:text/plain、image/pjpeg。
            getSize();            获取上传文件的大小。
            
            write(File file)      把上传的文件保存到指定文件中。
            delete();

三、文件上传需要考虑的几个问题
a、保证服务器的安全 把保存上传文件的目录放在用户直接访问不到的地方。 b、避免文件被覆盖 让文件名唯一即可。 c、避免同一个文件夹中的文件过多 方案一:按照日期进行打散存储目录 方案二:用文件名的hashCode计算打散的存储目录:二级目录 d、限制文件的大小:web方式不适合上传大的文件 设置单个文件大小 设置总文件大小 e、上传字段用户没有上传的问题 通过判断文件名是否为空即可。 f、临时文件的问题 如果上传文件过大,就会有临时文件。 FileItem.delete(); 如果自己用IO流实现的文件上传,则要在流关闭后,清理临时文件。 FileItem.write(File file); 把上传的文件保存到指定文件,该方式会自动删除临时文件,注意:实际操作不能够自动删除临时文件,所以需要手动删除(即:使用 FileItem自带的方法上传文件)。

 

我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
相关文章
|
7月前
使用 responseentity进行文件的下载
使用 responseentity进行文件的下载
228 0
|
Java 开发工具 UED
“文件的上传与下载:实现与优化“
“文件的上传与下载:实现与优化“
69 0
|
机器人 Python
在阿里云RPA中,获取下载的文件
在阿里云RPA中,获取下载的文件
369 2
|
编解码 Java 应用服务中间件
文件的上传和下载
文件的上传和下载
97 0
|
前端开发 Java Apache
文件上传与下载
文件上传与下载 文件上传也称为upload,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。 文件上传时,对页面的form表单有如下要求: method=“post” 采用post方式提交数据 enctype=“multipart/form-data” 采用multipart格式上传文件 type=“file” 使用input的file控件上传
|
前端开发 网络协议 API
大文件处理(上传,下载)思考
在计算文件hash的方式,主要有以下几种: 分片全量计算hash、抽样计算hash。在这两种方式上,分别又可以使用web-work和浏览器空闲(requestIdleCallback)来实现.
大文件处理(上传,下载)思考
|
JavaScript iOS开发
上传20M的ipa ,使用Appuploader工具只有2分钟左右即可上传成功
上传20M的ipa ,使用Appuploader工具只有2分钟左右即可上传成功
上传20M的ipa ,使用Appuploader工具只有2分钟左右即可上传成功
|
分布式计算 Shell Spark
Zeepelin_安装_上传| 学习笔记
快速学习Zeepelin_安装_上传
Zeepelin_安装_上传| 学习笔记
利用微搭低代码实现附件的上传和下载
利用微搭低代码实现附件的上传和下载
利用微搭低代码实现附件的上传和下载
|
缓存 前端开发
前端下载并生成文件
前端下载并生成文件