一 文件上传
服务端:
一般服务端可以使用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基础的深入理解,如类、对象、接口、继承、多态等概念,以及更高级的主题,如并发编程、垃圾回收机制、JVM优化等...
以上就是关于“Socket读取文件上传并在服务器从新写入文件”的核心知识点。实际开发中,还需要考虑安全性、性能优化(如缓冲区大小的调整、错误重试策略等)、日志记录和异常处理等细节。同时,为了增强系统稳定性,...
总的来说,Java Web实习报告覆盖了前端页面设计、后端服务器交互和文件上传处理等关键技能,这些都是Java Web开发者必备的知识。通过这样的实习经历,学生不仅能够加深对这些技术的理解,还能体验到团队合作的重要性...
在IT行业中,日常工作中积累的小知识点往往能对我们的编程技能提升大有裨益,特别是对于初学者来说。以下是一些从给定文件中提取的重要知识点: 1. **jQuery事件绑定**: `$('#unitName').bind('input', function ...
7. **文件上传下载**:模拟一个简单的文件服务器,学习输入输出流、缓冲区和文件操作,理解网络传输中的数据处理。 8. **反射机制**:通过反射动态调用类的方法或访问字段,理解Class类、Constructor、Method等API...
这里需要说明的时,该文档是本人5年工作经验的积累,文档中大部分知识点来源于实际工作中的总结,(除了JAR等资源文件外)其代码都是可运行的,还有一部分知识来源于网络或者其他书籍,这里做一些收集,使该体系更加...
### 个人程序设计知识积累——Web开发篇 #### 阿里云服务器使用指南 **1. 操作系统选择** - 对于初次使用的用户,推荐使用 **Windows Server** 版本的操作系统,除非您已经熟悉 **Linux** 的操作。 **2. 修改...
以上知识点涵盖了Android应用开发中的一些常见问题及其解决方案,包括`ListView`的优化、WebView对Flash的支持以及文件上传等。这些技巧对于提高应用程序性能和用户体验有着重要的作用。开发者可以根据实际情况灵活...
jspSmartUpload是一个基于Java的开源组件,专门用于处理文件上传和下载,它提供了丰富的功能,使得开发者能够方便地在JSP应用中实现这些操作。然而,当面临中文文件名处理和处理小于64K的小文件时,开发者可能会遇到...
7. **文件上传与下载**:在实际的Web应用中,可能会涉及文件上传和下载功能。学习如何处理客户端的文件上传请求,以及如何安全地存储和提供文件下载,是提升项目实用性的关键。 8. **错误处理与日志记录**:良好的...
- 使用了Apache Commons FileUpload库来处理文件上传。具体步骤包括: 1. 检查请求是否包含文件(`ServletFileUpload.isMultipartContent(request)`) 2. 初始化`DiskFileItemFactory`,设置内存阈值和临时存储...
5. **文件上传与下载**:系统的核心功能是文件下载,所以必须理解如何处理文件的读取、写入、流传输以及断点续传等功能。在Java中,这通常涉及到FileInputStream、FileOutputStream和BufferedInputStream/...
尽管上传者因为限制未能提供全部资源,但提供的"Java书籍"已经足够初学者开启他们的Java学习之旅。下面我们将深入探讨这些书籍可能包含的知识点: 1. **Java基础**:这部分通常包括Java语言的基本语法,如变量、...
以下是详细的知识点讲解: ### IntelliJ IDEA 使用 IntelliJ IDEA 是一款强大的Java集成开发环境,它提供了许多方便的功能,如代码自动完成、语法高亮、错误检测等。在本次培训中,我们学习了如何从Git仓库中下载...
现在,我们将深入探讨`CTool.java` 可能包含的一些关键知识点。 1. **HTTP请求处理**: `CTool.java` 可能包含了处理HTTP请求的方法,例如发送GET或POST请求,解析响应内容,处理cookies和session等。这些功能可能...
7. 知识库:积累和分享公司内部知识,促进员工学习和成长。 8. 报表统计:生成各类业务报表,辅助决策分析。 此外,系统可能还涉及API接口设计,以便与其他系统集成,如HR人力资源系统、CRM客户关系管理系统等。...
以下是一些关于如何构建和优化Java软件工程师简历的关键知识点: 1. **个人信息**:简历的开头应该包含您的基本信息,如姓名、联系方式(电话、邮箱)、个人地址。确保这些信息准确无误,方便潜在雇主联系。 2. **...
- 技术点:采用MVC分层模型,包括表现层、业务逻辑层和数据服务层,文件上传与下载。新增技术:Linux初步使用、Excel操作、报表、源代码服务器配置及使用等。 - **JAVAEE**: - 目标:精通Struts、Spring、...
【标题】"java 6年的资料.zip"是一个包含六年间积累的Java开发相关知识的压缩文件,由一位经验丰富的开发者整理提供,旨在帮助在职业发展中快速查找和回顾关键信息。 【描述】提到的"前辈给的开发资料,换工作后方便...