`
atell
  • 浏览: 161642 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Java文件上传的一些知识积累

阅读更多

一 文件上传

服务端: 一般服务端可以使用struts,SpringMVC(web框架都有这样的支持),struts是基于common-fileupload的,SpringMVC则基于Commons FileUpload和COS FileUpload ,它们一般都可以设置服务端使用的磁盘tmp文件或内存的大小,单个文件大小和类型的限制等。

     本质上,它们都是在Servlet之上对request.getInputSteam()的内容做解析,服务器解析http post数据,仅仅是对http协议的实现,原理简单。(参考最后部分文件上传的http协议:http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 )

客户端: 可以使用swf或者js,swf有SWFUpload插件,js有Jquery很多插件,最终都是通过http post方式提交文件。单从文件上传的功能看,服务端不关心客户端使用的是swf还是js,因为最终都是http post方式(如果要实现进度条,服务端就需要关心是否要作配合了)。

 


二 进度条
js实现进度条原理: 因为js无法通过浏览器获取文件传输的进度,所以需要服务端配合,服务端将进度(当前长度,总长度)存到session中,提供新接口返回此2个值;而客户端:使用Jquery的ajax轮询(comet方式:请求-Blocked(30s内),响应-请求-Blocked(30s内),响应...)进度,并显示。


swf实现进度条的原理: flash是本地的插件,上传文件时是flash把流交给浏览器,因此它知道文件的进度,它可以在发送过程中将发送的相关状态数据回传到js的函数中处理,不需要服务端做特别的配合。

 

 

另外:qq邮箱的附件上传,默认情况下就是使用swf的方式,可以看到页面有引进upload.swf文件。qq邮件发送的进度条估计也是使用swf。因为js实现进度条的方式太耗服务器资源了,一般不这么做。

 

参考:

http://jakarta.apache.org/commons/fileupload

http://www.servlets.ocm/cos

分享到:
评论

相关推荐

    工作后JAVA的知识积累和部分JAVA资料(由于大小限制以后再上传更多)

    标题中的"工作后JAVA的知识积累"指的是在实际工作中不断学习和提升Java技能的过程。这可能包括对Java基础的深入理解,如类、对象、接口、继承、多态等概念,以及更高级的主题,如并发编程、垃圾回收机制、JVM优化等...

    socket读取文件上传并在服务器从新写入文件

    以上就是关于“Socket读取文件上传并在服务器从新写入文件”的核心知识点。实际开发中,还需要考虑安全性、性能优化(如缓冲区大小的调整、错误重试策略等)、日志记录和异常处理等细节。同时,为了增强系统稳定性,...

    java web实习报告.pdf

    总的来说,Java Web实习报告覆盖了前端页面设计、后端服务器交互和文件上传处理等关键技能,这些都是Java Web开发者必备的知识。通过这样的实习经历,学生不仅能够加深对这些技术的理解,还能体验到团队合作的重要性...

    一点平常工作下积累的小知识点

    在IT行业中,日常工作中积累的小知识点往往能对我们的编程技能提升大有裨益,特别是对于初学者来说。以下是一些从给定文件中提取的重要知识点: 1. **jQuery事件绑定**: `$('#unitName').bind('input', function ...

    java十大经典案例

    7. **文件上传下载**:模拟一个简单的文件服务器,学习输入输出流、缓冲区和文件操作,理解网络传输中的数据处理。 8. **反射机制**:通过反射动态调用类的方法或访问字段,理解Class类、Constructor、Method等API...

    JAVA 五年的工作经验和学习笔记

    这里需要说明的时,该文档是本人5年工作经验的积累,文档中大部分知识点来源于实际工作中的总结,(除了JAR等资源文件外)其代码都是可运行的,还有一部分知识来源于网络或者其他书籍,这里做一些收集,使该体系更加...

    个人程序设计知识积累.txt

    ### 个人程序设计知识积累——Web开发篇 #### 阿里云服务器使用指南 **1. 操作系统选择** - 对于初次使用的用户,推荐使用 **Windows Server** 版本的操作系统,除非您已经熟悉 **Linux** 的操作。 **2. 修改...

    android 小知识积累

    以上知识点涵盖了Android应用开发中的一些常见问题及其解决方案,包括`ListView`的优化、WebView对Flash的支持以及文件上传等。这些技巧对于提高应用程序性能和用户体验有着重要的作用。开发者可以根据实际情况灵活...

    jspSmartUpload上传下载全攻略 (解决中文问题和小于64K文件问题)

    jspSmartUpload是一个基于Java的开源组件,专门用于处理文件上传和下载,它提供了丰富的功能,使得开发者能够方便地在JSP应用中实现这些操作。然而,当面临中文文件名处理和处理小于64K的小文件时,开发者可能会遇到...

    简单的Java+jsp小程序

    7. **文件上传与下载**:在实际的Web应用中,可能会涉及文件上传和下载功能。学习如何处理客户端的文件上传请求,以及如何安全地存储和提供文件下载,是提升项目实用性的关键。 8. **错误处理与日志记录**:良好的...

    java web实习报告范文.pdf

    - 使用了Apache Commons FileUpload库来处理文件上传。具体步骤包括: 1. 检查请求是否包含文件(`ServletFileUpload.isMultipartContent(request)`) 2. 初始化`DiskFileItemFactory`,设置内存阈值和临时存储...

    java铁人下载系统.zip

    5. **文件上传与下载**:系统的核心功能是文件下载,所以必须理解如何处理文件的读取、写入、流传输以及断点续传等功能。在Java中,这通常涉及到FileInputStream、FileOutputStream和BufferedInputStream/...

    Java初学者的学习书籍

    尽管上传者因为限制未能提供全部资源,但提供的"Java书籍"已经足够初学者开启他们的Java学习之旅。下面我们将深入探讨这些书籍可能包含的知识点: 1. **Java基础**:这部分通常包括Java语言的基本语法,如变量、...

    暑期Java培训1.docx

    以下是详细的知识点讲解: ### IntelliJ IDEA 使用 IntelliJ IDEA 是一款强大的Java集成开发环境,它提供了许多方便的功能,如代码自动完成、语法高亮、错误检测等。在本次培训中,我们学习了如何从Git仓库中下载...

    CTool.java

    现在,我们将深入探讨`CTool.java` 可能包含的一些关键知识点。 1. **HTTP请求处理**: `CTool.java` 可能包含了处理HTTP请求的方法,例如发送GET或POST请求,解析响应内容,处理cookies和session等。这些功能可能...

    OA办公系统java写的

    7. 知识库:积累和分享公司内部知识,促进员工学习和成长。 8. 报表统计:生成各类业务报表,辅助决策分析。 此外,系统可能还涉及API接口设计,以便与其他系统集成,如HR人力资源系统、CRM客户关系管理系统等。...

    java软件工程师简历模板 应届生

    以下是一些关于如何构建和优化Java软件工程师简历的关键知识点: 1. **个人信息**:简历的开头应该包含您的基本信息,如姓名、联系方式(电话、邮箱)、个人地址。确保这些信息准确无误,方便潜在雇主联系。 2. **...

    JAVA软件工程课程体系

    - 技术点:采用MVC分层模型,包括表现层、业务逻辑层和数据服务层,文件上传与下载。新增技术:Linux初步使用、Excel操作、报表、源代码服务器配置及使用等。 - **JAVAEE**: - 目标:精通Struts、Spring、...

    java 6年的资料.zip

    【标题】"java 6年的资料.zip"是一个包含六年间积累的Java开发相关知识的压缩文件,由一位经验丰富的开发者整理提供,旨在帮助在职业发展中快速查找和回顾关键信息。 【描述】提到的"前辈给的开发资料,换工作后方便...

Global site tag (gtag.js) - Google Analytics