- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.上传文件名的中文乱码和上传数据的中文乱码
upload.setHeaderEncoding(UTF-8);//可以解决上传文件名的中文乱码
//表单为文件上传,设置request的编码无效,不能解决中文乱码,只能手工转化
a. value=new String(value.getBytes(iso8859-1),utf-8);
b. String value=item.getString(UTF-8); //上传组件commons-fileupload 作者提供了该方法
2.为了保证服务器安全,上传文件应该放到外界无法访问的目录;通常放在WEB-INF下的目录
3.为了保证每个用户上传文件的不覆盖;要写一个算法,产生唯一的文件名
public String makeFileName(String fileName){
return UUID.randomUUID().toString()+_+fileName;
}
4.为防止一个目录下面出现太多文件,使用hash算法打算存储
//savePath为 要保存的根目录;
//在根目录下产生多级目录;打散文件保存
//这样打散有个好处;可以根据文件名找到文件的真实目录
public String makePath(String fileName,String savePath){
int hashcode=fileName.hashCode();
int dir1=hashcode0xf;//拿到hashcode的1-4位 ;那么1级目录最大能产生16个目录
int dir2=(hashcode0xf0)4;//拿到hashcode的5-8位;那么2级目录最大能产生16个目录
String dir=savePath+\\+dir1+\\+dir2;
File file=new File(dir);
if(!file.exists())
{
file.mkdirs();//要调用mkdirs;多级目录
}
return dir;
}
5.要限制上传文件的最大值,可以通过(ServletFileUpload类)upload.setFileSizeMax(1024);
并通过捕获FileUploadBase.FileSizeLimitExceededException异常给用户友好提示
多个文件(总量)最大值:upload.setSizeMax(1024*10);//10KB
异常为:FileUploadBase.SizeException
6.上传文件超过设定的缓存区大小,则要设置上传文件的临时目录,
DiskFileItemFactory factory=new DiskFileItemFactory();
factory.setRepository(new File(this.getServletContext().getRealPath(/WEB-INF/temp)));
而临时目录的中的文件最后要做删除;
想确保临时文件被删除,一定要在处理完上传文件后,调用item.delete()方法;
7.限制上传文件的类型;在收到上传的文件名时,判断后缀名是否合法;
8.监听文件上传的进度;
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setProgressListener(new ProgressListener(){
public void update(long pBytesRead,long pContentLength,int pItems){
System.out.println(文件大小为:+pContentLength+,当前已处理:+pItems);
}
});
//监听器一定要在下面这行代码的前面,是下面代码要调用监听器
ListFileItem list=upload.parseRequest(request);
9.在web页面中动态添加文件上传输入项
function addinput(){
var div = document.getElementById(file);
var input = document.createElement(input);
input.type=file;
=filename;
var del = document.createElement(input);
del.type=button;
del.value=删除;
您可能关注的文档
最近下载
- 朝花夕拾名著导读练习及答案.pdf VIP
- 乳腺癌根治手术配合.pptx VIP
- Unit 6 Numbers in life Part A Let's talk Count and say 课件人教版英语三年级下册2025.pptx
- chapter 2 中国哲学及宗教.ppt VIP
- 初级统计师资格考试(统计专业知识和实务)模拟题库及答案(运城2025年).docx VIP
- 危急值报告制度及流程Ppt.ppt VIP
- 初中数学与体育融合的跨学科主题教学策略分析教学研究课题报告.docx
- 京瓷 TASKalfa 2554ci 3554ci 彩色复印机中文维修手册.pdf VIP
- 最新人教版九年级数学上册-全册课件全集(1215张).pptx VIP
- 海尔WGG 冰箱售后服务手册型号: BCD-430WACS.PDF
文档评论(0)