- 浏览: 719611 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (76)
- DB-MySQL-noSQL-K/V (0)
- Tomcat-Jetty-JBoss (0)
- Java (12)
- Python (5)
- SVG (0)
- IDE-Eclipse (1)
- Vi-Vim (1)
- DWR-EXT-GWT-JSF (0)
- HTML-XHTML-XML-JSON-HTML5 (1)
- FLEX-ActionScript-AIR (1)
- 软件过程-软件质量 (2)
- 数学-计算数学 (2)
- 数学-数理统计-R (5)
- 信息论-系统论-控制论 (1)
- Golang (5)
- Erlang (2)
- 生活-心情 (1)
- 领域-生物信息学-基因组学 (6)
- 领域-生物信息-开发 (2)
- 领域-分子进化与系统发育-比较基因组学 (2)
- 数据-存储-交换 (3)
- 数据可视化-dataviz-infographic (4)
- 分布式-并行-云计算-网格-IaaS (3)
- PaaS-GoogleAppEngine-SAE (4)
- REST-RESTful-Restlet (2)
- RIA (0)
- 职业-程序人生 (3)
- 项目管理-PM-PMP (1)
- 分析-设计-架构 (10)
- 数据结构-算法 (6)
- 行业-创业 (3)
- 网虫生活-APP (2)
- Matlab-Scilab (2)
- JavaFX (1)
- Lisp-Lua-Haskell-FP (1)
- IT技术选型-咨询顾问 (3)
- Server-Apache-Nginx-lighttp (1)
- 数据可视化-Circos (0)
- 领域-互联网-移动互联网-IM (8)
- 领域-电子商务-B2C-O2O (1)
- 学术-科学研究 (2)
- IM-XMPP-STUN-TURN (0)
- Lucene-Solr-ElasticSearch (0)
- 分布式-HA-zookeeper (0)
最新评论
-
bluky999:
转:Python 标准库 urllib2 的使用细节http: ...
python发送GET或POST请求以便干一些趣事 -
bluky999:
aber_song 写道兄台,你实践完了吗,最近也在看这个,期 ...
使用web2py开发python web程序,部署到GAE或者apache上 -
aber_song:
兄台,你实践完了吗,最近也在看这个,期待呀。
使用web2py开发python web程序,部署到GAE或者apache上 -
luyuwww:
...
一位Erlang程序员的自白 -
bluky999:
STUN和TURN服务器 restundhttp://www. ...
pystun 和 py2exe 以及 NAT类型检测
1 HTTP协议上的文件上传,最频繁的应用场景了。 RFC1867里定义的标准HTTP协议POST报文格式如下:
HEADER:
Content-Type: multipart/form-data;
BODY:
Content-type: multipart/form-data, boundary=AaB03x --AaB03x content-disposition: form-data; name="field1" Joe Blow --AaB03x content-disposition: form-data; name="pics" Content-type: multipart/mixed, boundary=BbC04y --BbC04y Content-disposition: attachment; filename="file1.txt"
注释:
1 传文件的时候 使用的Media Type name: multipart , Media subtype name: form-data
2 boundary用来标识分割不同的field,其中文件是一个特殊的field
3 多个文件的时候得继续制定 Content-type: multipart/mixed ,同时定义新的 boundary
4 不同的field注意区分 Content-disposition 的值,是 form/data 还是 attachment
5 这里定义的是POST方式的上传,不针对PUT 。
2 如果需求非常确定每次请求只上传一个文件,那么我们可以不使用HTTP约定的这种方式,而改用一种更简单直接的方式:
- 在 HEDER 里的 POST 后的URL里携带普通参数 field
- 在 BODY里直接装在要上传的文件内容,抛弃任何格式等约束
- 服务端直接从BODY里读取流数据保存为文件,其他参数从URL里读取
这样以来HTTP报文就类似:
HEDER
Host: www.yangzt.com:9190
Content-Length: xxxxx
BODY
注释:
1 这不是标准的文件上传方式,但仍然是标准的HTTP报文
2 这种私有约定的方式,需要服务端和客户端同时特异化处理
3 针对每次请求只传一个文件的需求,这样改良后就会比较简洁,至于效率上是否有明显差别还不得而知,未做测试对比
3 总结:
在HTTP协议这一层上做文件的上传下载,也是很常见的方式,尤其很多移动应用里会采用;因为对客户端来说打开一个URL来GET或POST数据,相比打开一个scocke连接来读取或写入数据要简单得多,实现也快捷高效。
HTTP协议上的上传下载,也可以轻松实现断点续传,和进度反馈等,主要依赖length和range两个值。所以作为标准考虑,一定要明确地设置header里的length属性 --- 如果不设置,对于一般浏览器来说无碍,仍然可以成功下载,但是对于诸如libcurl这样的类库来说则无法取到数据。
另外,TCP协议层上的文件上传下载,也是很常见的应用场景,改日再次涉及另作详谈。
评论
发表评论
-
Akka 简介与入门
2014-10-31 10:21 2311Akka 简介与入门 参考官网 http://a ... -
在Eclipse和NetBeans中针对不同项目设置不同的JAVA版本进行编译和运行
2014-08-29 12:21 2238众所周知,Eclipse中可以设置安装的JDK,以及默 ... -
IBMDW: 数据层的多租户浅谈
2014-03-21 10:57 1134数据层的多租户浅谈 http://www. ... -
消息队列与 ActiveMQ, RabbitMQ,ZeroMQ 等
2013-12-31 15:15 11561关于消息队列 对于一个消息系统,提高吞吐量的同时 ... -
Openfire附近的人插件 OpenfireLBS
2013-12-23 17:42 2725项目代码 https://github.com/node/ ... -
网络编程与框架
2012-08-04 12:20 13241 网络通信系统 / 网络服务器 转: JAV ... -
TimSort相关
2012-01-07 12:17 24671 关于TimSort,这里做一个资料汇总,具体介绍与实现请参 ... -
编程语言与函数式编程
2011-09-17 14:23 1442编程语言与函数式编 ... -
使用MINA2开发服务端程序
2011-09-08 14:18 2819使用MINA2开发服务端程序 关键字 :MIN ... -
Mahout 和 Mahout in Action
2011-09-05 15:07 2293Mahout 和 Mahout in Action ... -
将 openfire 源码作为java项目导入eclipse调试
2011-08-10 16:17 10035将 openfire 源码作为java项目导入ec ... -
几个JAVA 及WEB开发基础回顾
2011-08-04 21:00 8021 关于多线程和线程安 ... -
关于 “推荐引擎” 的dw文章收集
2011-08-03 20:18 2050这不是一篇文章,只是一个ibm dw上的文章list - 关于 ... -
了解 ICE和ACE
2011-08-03 19:58 38331 ice [其实,可以跟thrift比,有木有 ] ... -
JAVA开发久了,需要加强的几个方面
2011-07-28 18:41 13741 多线程: 不管是什么方式实现,多线程是迟早都会遇到和面对的 ... -
一个关于Java变量命名和代码生成的差异
2011-05-06 21:27 9301 情景描述: - 服务端使用 thrift,自动生成 ... -
JavaCC简介与典型应用
2010-06-22 14:31 18591 JavaCC is a parser/scanner ... -
Java虚拟机上的脚本语言
2009-07-24 17:27 1961在脚本语言、函数式语言纷纷成为后起之秀的时代,让我们总结一下J ... -
使用Mina框架开发Java网络应用程序
2009-06-11 12:58 3496首先,可以简单地认为Mina就是一个java网络应用的框架,相 ... -
从RESTlet开始学习构建REST式架构的Java应用
2009-04-17 16:40 3278目录 1REST式架构 2Roy的博士论文提 ...
相关推荐
文件上传功能是HTTP协议中的一个重要应用,允许用户在Web应用中上传本地文件到服务器。Java作为一种强大的编程语言,提供了多种方式来实现HTTP协议的文件上传功能。在这个场景下,我们通常会用到原生态的三层架构,...
在IT行业中,通过HTTP协议上传文件是一项常见的任务,特别是在web应用和桌面应用程序的交互中。...理解这些知识点对于开发涉及文件上传的系统至关重要。通过实践和学习提供的示例代码,你可以更好地掌握这一技术。
文件上传断点续传协议是一种高效且可靠的文件上传机制,尤其适用于处理大文件和网络不稳定的情况。该协议的实现基于Python和JavaScript,采用一发一回的通信方式,确保了客户端与服务器之间的交互效率和准确性。它...
用vc++在http协议下实现文件的上传和下载 里面包含的几个文档可供大家研究
c++ 实现,在 linux 平台测试通过,windows 上原理是一样的,下载上传大文件没有问题,
在单片机上实现HTTP Upload小文件上传是一项技术性较强的工作,主要涉及到嵌入式系统、网络通信协议以及操作系统任务管理等多方面的知识。这里我们将深入探讨如何在单片机环境中,利用C语言和HTTP POST方法来实现这...
在这个项目中,我们关注的是通过HTTP协议进行数据交换,特别是涉及多文件上传。以下是对这个项目及其相关知识点的详细说明: 首先,`CHttpFile` 是Microsoft的MFC(Microsoft Foundation Classes)库中的一个类,它...
本文将深入探讨如何使用VC++来实现HTTP协议的文件上传和数据下载功能。 首先,我们需要理解HTTP协议的基本原理。HTTP是一个基于TCP/IP的应用层协议,它定义了客户端(如Web浏览器)和服务器之间交换数据的格式和...
客户端文件续传上传到服务端,客户端http协议上传文件,客户端webserver上传文件,客户端续传,分割上传到服务器,模拟百度网盘文件上传 由于项目的需要一个客户端用来上传文件的,所以今天做了一个简单的例子
在MFC中实现HTTP文件上传可以帮助开发者创建自定义的客户端应用程序,以与Web服务进行交互。 HTTP协议主要包含两种请求方法:GET和POST。GET方法常用于获取资源,而POST方法则用于提交数据,包括上传文件。在C++中...
而通过HTTP协议进行文件上传是网络应用中的常见需求。本知识点将详细介绍如何利用C#的WinForm界面和HTTP协议来实现文件上传功能。 首先,理解WinForm。WinForm是.NET Framework提供的一种用于构建桌面应用程序的...
HTTP是一种应用层协议,用于在Web上交换各种类型的数据。它基于请求-响应模型,客户端发送请求到服务器,服务器接收到请求后返回响应。在C++中,通过自定义类来封装HTTP操作可以简化网络编程,并提供更友好的API供...
HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的传输协议。在这个场景下,我们将关注如何使用HTTP协议来实现文件的上传和下载。 文件上传通常涉及到...
一、HTTP协议与文件上传 HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器。在HTTP协议中,文件上传通常通过POST请求实现。POST请求允许客户端发送数据到...
本文将详细讲解如何使用HTTP协议在Android客户端实现文件上传,并涉及服务器端的相关设置。 首先,我们需要了解HTTP协议。HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是互联网...
配置http协议上传文件的工具,并且附有安装说明!
本项目名为“大文件在线上传(HTTP协议)”,是利用Java编程语言开发的,结合了Tomcat服务器进行部署,旨在提供一个高效且稳定的大文件上传与下载平台。以下是关于这个项目及其涉及的技术点的详细说明: 1. **HTTP...
linux c 通过http 协议 ,上传文件到服务器 源码
在Android开发中,有时我们需要实现自定义的HTTP通信,尤其是涉及到文件上传的场景。"android手写Http协议上传...在实现自定义HTTP协议时,务必注意网络连接的管理和数据传输的效率,以提供稳定可靠的文件上传服务。