一、文件上传的基本操作:
1、 表单属性enctype的设置
multipart/form-data和application/x-www-form-urlencoded的区别
FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是“application/x-www-form-urlencoded”。
然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。
在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。
Browser端<form>表单的ENCTYPE属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。
2、实现过程:
1、 两个文件a.txt b.txt
a.txt 内容:aaa
b.txt内容:bbb
2、 upload.jsp
3、 UploadServlet
打印结果为
upload.jsp
UploadServlet
三、上传文件中应当注意的细节
解决中文乱码问题
1、 上传中文文件的乱码问题
2、 上传的普通输入项的乱码
利用FileItem类的getString(String encoding)
解决没有指定文件名的问题
判断获取的文件名是否为空
临时文件的删除问题
保存路径问题
如表示url资源时应该用斜杠 “/”
如表示硬盘路径时用斜杠“\”
为保证服务器安全,上传的文件应禁止用户直接访问,通常保存在应用程序的WEB-INF目录下,或者不受WEB服务器管理的目录
演示
如文件上传路径在web发布目录下
1)编写destory.jsp内容如下
为防止单个目录下文件过多,影响文件读写速度,处理上传文件的程序应根据可能的文件上传总量,选择合适的目录结构生成算法,将上传文件分散存储。如利用日期等方式分布目录。
哈希目录:
利用文件名的哈希值算出二级目录。
具体做法是,取得文件名的哈希值的第四位作为一级目录(目录取值为0-15),5-8位作为二级目录(目录取值为0-15),如此能得到16个一级目录,每一个一级目录下可以有16个二级目录。
所有的文件随机分散在16*16的二级目录中,这样即使有人在短时间内上传了海量的文件,也不至于让所有的文件都存入某一个目录中
另外,也不用担心文件太过分散不易查找,因为下载时只需根据用户提供的文件名在此进行哈希运算就可以重新确定该文件的存储目录。
如果超出大小,需要给用户友好提示:
限制上传文件类型
可以根据上传文件的扩展名来控制
多文件上传的问题
如果页面允许用户同时上传多个页面,此时需要将上传成功的文件或未成功的文件做保存,以便进行状态提示或者重新上传未成功上传文件
ProgressListener显示上传进度
以KB或M为单位显示上传进度。
到此这篇若依文件上传从后端限制文件类型(若依文件上传从后端限制文件类型怎么办)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/77165.html