文件上传与下载

本文深入探讨了使用Apache Commons-fileupload组件处理Web文件上传的常见问题及解决方案,包括中文乱码处理、文件安全存储、多次上传文件的处理、文件大小控制、临时文件管理、文件类型限制、上传进度监听以及用户未选择文件时的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Request对象提供了一个getInputStream方法,通过这个方法可以读取到客户端提交过来的数据。但由于用户可能会同时上传多个文件,在servlet端编程直接读取上传数据,并分别解析出相应的文件数据是一项非常麻烦的工作,示例。
为方便用户处理文件上传数据,Apache 开源组织提供了一个用来处理表单文件上传的一个开源组件( Commons-fileupload ),该组件性能优异,并且其API使用极其简单,可以让开发人员轻松实现web文件上传功能,因此在web开发中实现文件上传功能,通常使用Commons-fileupload组件实现。
使用Commons-fileupload组件实现文件上传,需要导入该组件相应的支撑jar包:Commons-fileupload和commons-io。commons-io 不属于文件上传组件的开发jar文件,但Commons-fileupload 组件从1.1 版本开始,它工作时需要commons-io包的支持。

以下是上传文件中经常遇到的问题:

一、上传文件名的中文乱码和表单数据的中文乱码

1、普通字段输入的中文乱码:
FileItem getString("UTF-8")
2、上传文件的文件名乱码
ServletFileUpload setHeaderEncoding("UTF-8")

二、如何保证服务器的安全

上传的文件放到用户访问不到的地方。WEB-INF

三、多次上传同名文件的覆盖
要对上传的文件进行改名:要改成保证名称唯一即可
3279483274327948_文件名.txt


四、如何防止同一目录下文件太多的问题

分目录存储:打散目录后存储


五、上传文件的大小控制(单个文件和总大小),及如何友好提示用户

单个文件大小控制:
ServletFileUpload setFileSizeMax(5*1024*1024);//单个文件最大只能是5M
l
总文件大小控制:
ServletFileUpload setSizeMax(6*1024*1024);//总文件大小

给用户友好提示:通过抓异常的形式
FileUploadBase.FileSizeLimitExceededException:单个文件超出大小抛此异常
FileUploadBase.SizeLimitExceededException:总文件超出大小抛此异常

六、超出10k的文件的临时文件的处理
临时文件默认不会删除,需要手工清除
FileItem delete()
七、限制上传文件的类型

通过判断上传文件的后缀名即可。不是很严格

八、监听文件的上传进度
为ServletFileUpload注册一个监听。ProgressListener

九、用户没有选择文件上传时的问题

if(filename==null||filename.trim().equals("")){

continue;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值