`
ybygjy
  • 浏览: 105945 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

文件上传原理实现

 
阅读更多

文件上传原理实现

客户端浏览器是怎样上传数据的呢?服务器端如何接收上传的文件数据?

级别: 初级

王延成 (王延成), 作者/编者,

2004 年 9 月 01 日

文章主要描述http表单上传二进制数据流规范的简单实现

(一)关于Form表单上传文件规范

总结个人在对新技术、新事物的学习和解决问题的过程,深刻体会到多理解掌握技术基础理论知识再加上相应的实践,的确能帮助我们在解决某些问题的时候起到事半功倍的效果。

以前上传文件类似的功能都是采用第三方组件来做的,真的是基于接口编程了。不出问题还好,真要是出现问题解决起来太不舒服了,往往属于那种拆了西墙补东墙的策略。最近,在做文件上传时学习了一些 关于html>form上传数据的格式规范,依据人家定义的规范做了一些简单的工作。。。算是实现了个小轮子吧。


(二)实现

1、规则
1.1 上传数据块的分割规则

基于html form表单上传的数据都是以类似-----------------------------7da3c8e180752{0x130x10}这样的分割符来标记一块数据的起止,可不要忘记后面的两个换行符。关于换行符有三种,如下:

操作系统 换行符描述 原始标记 ascii码 十六进制
Window Window的换行符是两个 //r//n 1310 0x0d0x0a
Unix Unix的换行符是一个 //n 10 0x0a
Mac OS Mac OS的换行符是一个 //r 13 0x0d
这块没有对Unix、MacOS上做测试,只在Window上测试了换行是两个(0x0d0x0a)
1.2 注意在后台从request中取得分割串少两个--,在看下面的原始数据你会发现流的最后是以--结束的。
1.3 上传的原始数据串,本来中文字符是乱码的。为了清晰一些使用字符集UTF-8转了下码。

1.4 小结

基于1.3小节可以非常容易总结归纳出html-->form元素内容。有两个文件类型元素,三个text元素(其中一个元素是textarea)

2、操作顺序流程描述




回页首

3、实现代码

需要明确注意的一个问题是关于request.getInputStream();获取请求体数据流不可用的问题,见示例代码:

3.1、类图

3.2、代码内容

入口Servlet
工具类



回页首
基础实现



回页首

(三)资源

示例代码下载
下载示例代码
资料
搜集文件上传原理
表单规范
1、http://www.ietf.org:80/rfc/rfc1867.txt
2、http://www.ietf.org:80/rfc/rfc2045.txt
3、http://www.iana.org:80/assignments/character-sets
4、http://www.htmlhelp.com/reference/html40/forms/form.html



回页首
分享到:
评论

相关推荐

    web文件上传原理讲解与代码

    ### Web文件上传原理详解 #### 一、引言 随着互联网技术的发展,用户与网站之间的交互变得越来越频繁和复杂,其中文件上传就是一种常见的交互方式。无论是上传照片、文档还是视频,都离不开文件上传功能的支持。...

    java文件上传进度条实现基本原理

    Java 文件上传进度条实现的基本原理主要涉及到客户端与服务器之间的数据传输、多线程处理和用户界面更新。在本文中,我们将深入探讨这个过程,并提供一个简单的实现思路。 首先,了解文件上传的基本流程:用户选择...

    文件上传原理学习

    下面我们将深入探讨文件上传的原理。 1. **前端上传机制** - **HTML表单**:传统的文件上传主要通过`<form>`标签实现,设置`enctype="multipart/form-data"`以支持文件上传。`<input type="file">`用于让用户选择...

    SpringCloud大文件分片断点上传实现原理

    SpringCloud大文件分片断点上传实现原理是指在云计算平台上实现大文件的分片断点上传,主要解决了大文件上传的几个关键问题,如上传速度、上传可靠性、上传安全性等。该技术方案主要包括三个部分:文件上传、OSS...

    通过Servlet文件上传理解Struts2文件上传原理(附源码)

    在本文中,我们将深入探讨如何使用Servlet来理解Struts2中的文件上传原理。Servlet是Java Web应用程序中的一个组件,用于处理HTTP请求和响应。而Struts2是一个基于MVC(模型-视图-控制器)设计模式的开源Web应用框架...

    文件上传原理

    ### 文件上传原理详解 在互联网应用中,文件上传是一个常见且重要的功能,它允许用户将本地文件发送到服务器,以供后续处理或存储。这一过程不仅涉及到前端与后端的交互,还涉及到网络通信、数据格式转换、安全性...

    PHP开发环境下文件上传的原理与实现.pdf

    "PHP开发环境下文件上传的原理与实现" PHP作为当前流行的Web应用程序开发技术,对于一个完整的Web应用程序,文件上传是其基本功能之一。下面将详细论述PHP开发环境下文件上传的原理与实现方法,并对上传文件的格式...

    C#实现文件上传

    ### C#实现文件上传的关键知识点 #### 一、概述 在C#中实现文件上传是一项常见但非常重要的功能,尤其对于Web应用来说更是如此。本文将深入探讨如何使用C#来实现文件上传,并重点关注以下几个方面:如何利用C#进行...

    文件上传原理.pdf

    ### 文件上传原理详解 #### 一、引言 随着信息技术的快速发展,Web应用程序已经成为现代办公自动化系统中的核心组成部分。在这些应用中,文件上传是一项基本而又重要的功能,它允许用户从本地计算机向服务器发送...

    JSP实现 文件上传

    一、理解文件上传原理 文件上传是通过HTTP协议的POST请求实现的。客户端(浏览器)使用表单中的文件输入控件选择要上传的文件,然后提交到服务器端。服务器端接收到请求后,解析请求体中的二进制数据,将其保存为...

    嵌入式Linux下基于CGI的文件上传下载的实现

    ### 嵌入式Linux下基于CGI的文件上传下载实现 #### 1. 概述 随着嵌入式Linux的深入研究和发展,其在各领域的应用变得越来越广泛。嵌入式Linux是一种针对特定应用场景进行了裁剪和优化的Linux版本,能够适应资源...

    大文件上传, ajax 实现, 支持10G以上的上传

    本教程将基于标题“大文件上传,ajax实现,支持10G以上的上传”和描述,详细介绍如何使用AJAX实现大文件上传,并探讨其背后的原理和技巧。 首先,理解大文件上传的关键在于分块上传。当文件过大时,一次性上传整个...

    java文件异步上传

    当文件上传请求到达服务器时,这些方法会接收文件流,保存到服务器的磁盘上,或者将其存储到数据库或云存储服务中。处理上传的Java代码需要考虑到文件大小限制、错误处理、文件命名规则以及安全性等方面的问题。 ...

    在单片机上实现http upload 小文件上传

    在单片机上实现HTTP Upload小文件上传是一项技术性较强的工作,主要涉及到嵌入式系统、网络通信协议以及操作系统任务管理等多方面的知识。这里我们将深入探讨如何在单片机环境中,利用C语言和HTTP POST方法来实现这...

    HTML中文件上传与上传进度跟踪的原理分析.pdf

    在HTML中实现文件上传,主要是通过HTML表单和HTTP协议的multipart/...理解这些原理对于开发高效、用户友好的文件上传功能至关重要。而上传进度跟踪则是提升用户体验的重要一环,需要结合前端和后端的技术手段来实现。

    php实现文件上传

    本篇文章将深入探讨PHP文件上传的原理和实现步骤,以及如何实现图片预览。 首先,我们需要了解HTTP协议在文件上传中的作用。在Web表单提交时,如果设置了`enctype="multipart/form-data"`,浏览器会将表单数据分割...

    java实现的文件上传

    本教程将详细介绍如何使用Java实现文件上传功能。 一、基本原理 文件上传通常涉及到HTTP协议中的`multipart/form-data`编码类型。这种编码方式允许在一个表单中发送多个部分的数据,包括文本和二进制数据(如文件...

    实现无刷新进度条单文件,多文件上传功能

    "实现无刷新进度条单文件,多文件上传功能,包括大文件上传"是这个项目的核心目标。为了达到这个目标,开发者通常会采用Ajax技术,结合JavaScript、HTML5的File API以及后端服务器处理来创建一个用户友好的界面,...

    IDEA SpringMVC 实现文件的上传下载

    在实际项目中,需要注意文件上传的安全问题,比如防止恶意文件上传、限制文件类型和大小、使用安全的文件命名策略等。此外,下载时应确保文件路径不会暴露敏感信息。 7. **IDEA的使用**: IntelliJ IDEA提供了...

    Java自带的HttpURLConnection访问接口实现文件上传

    在本文中,我们将深入探讨如何使用HttpURLConnection...虽然这需要对HTTP协议有一定的理解,但它是理解网络编程和文件上传原理的一个好起点。在实际开发中,我们还需要考虑如安全性、错误处理和性能优化等更多因素。

Global site tag (gtag.js) - Google Analytics