文件上传下载考虑的问题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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=删除;

文档评论(0)

cj80011 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档