http以post方式上传一个文件

上传人:碎****木 文档编号:220860914 上传时间:2021-12-09 格式:DOCX 页数:4 大小:16.24KB
返回 下载 相关 举报
http以post方式上传一个文件_第1页
第1页 / 共4页
http以post方式上传一个文件_第2页
第2页 / 共4页
http以post方式上传一个文件_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《http以post方式上传一个文件》由会员分享,可在线阅读,更多相关《http以post方式上传一个文件(4页珍藏版)》请在金锄头文库上搜索。

1、 以 post 方式上传一个文件,构造其恳求头和消息报文本篇文章主要介绍了“ 以 post 方式上传一个文件,构造其恳求头和消息报文(转载)“,主要涉及到 以 post 方式上传一个文件,构造其恳求头和消息报文(转载)方面的内容,对于 以 post 方式上传一个文件,构造其恳求头和消息报文(转载)感爱好的同学可以参考一下。假 设 接 受 文 件 的 网 页 程 序 位于 :/192.168.24.56/logsys/home/uploadIspeedLog!doDefault.html.假设我们要发送一个图片文件,文件名为“kn.jpg”,首先客户端链接 192.168.24.56 后, 应当

2、发送如下 恳求:POST/logsys/home/uploadIspeedLog!doDefault.html /1.1 Accept: text/plain, */*Accept-Language: zh-cnHost: 192.168.24.56Content-Type:multipart/form-data;boundary=7db372eb000e2User-Agent: Win Client Content-Length: 3693 Connection: Keep-Alive-7db372eb000e2Content-Disposition: form-data; name=“fi

3、le“; filename=“kn.jpg“Content-Type: image/jpeg(此处省略 jpeg 文件二进制数据-7db372eb000e2-此内容必需一字不差,包括最终的回车,红色字体局部就是协议的头。给效劳器上传数 据时,并非协议头每个字段都得说明,其中,content-type 是必需的,它包括一个类似标志性质的名为 boundary 的标志,它可以是任凭输入的字符串。对后面的具体内容也是必需的。它用来区分一段内容的开头。Content-Length: 3693 ,这里的 3693 是要上传文件的总长度。绿色字体局部就是需要上传的数据,可以是文本,也可以是图片等。数据内容

4、前面需要有Content-Disposition, Content-Type以及 Content-Transfer-Encoding等说明字段。最终的紫色局部就是协议的结尾了。留意这一行:Content-Type: multipart/form-data; boundary=7db372eb000e2依据 rfc1867, multipart/form-data 是必需的.-7db372eb000e2 是分隔符, 分隔多个文件、 表单项。 其中b372eb000e2 是即时生成的一个数字,用以确保整个分隔符不会在文件或表单项的内容中消灭。Form 每个局部用分隔符分割,分隔符之前必需加上“-“

5、着两个字符(即-boundary)才能被 协议认为是 Form 的分隔符,表示完毕的话用在正确的分隔符后面添加“-“表示完毕。前面的 -7d 是 IE 特有的标志,Mozila 为71.每个分隔的数据的都可以用 Content-Type 来表示下面数据的类型,可以参考 rfc1341 ( :/ ietf.org/rfc/rfc1341.txt)例如:Contect-Type:image/jpeg 表示下面的数据是 jpeg 文件数据=转通过 协议上传文件2021-04-30 23:551、概述在 最 初 的 协 议 中 , 没 有 上 传 文 件 方 面 的 功 能 。rfc1867 ( :/

6、 ietf.org/rfc/rfc1867.txt ) 为 协议添加了这个功能。客户端的扫瞄器,如Microsoft IE, Mozila, Opera 等,依据此标准将用户指定的文件发送到效劳器。效劳器端的网页程序,如 php, asp, jsp 等,可以依据此标准,解析出用户发送来的文件。Microsoft IE, Mozila, Opera 已经支持此协议,在网页中使用一个特别的 form 就可以发送文件。绝大局部 server ,包括 tomcat ,已经支持此协议,可承受发送来的文件。各种网页程序,如 php, asp, jsp 中,对于上传文件已经做了很好的封装。2、上传文件的实例

7、:用 servelet 实现 server 为 tomcat 4.1.241. 在一个 html 网页中,写一个如下的 form : load multi files :text field :2. 效劳端 servelet 的编写现在第三方的 upload file 工具库很多。 Jarkata 工程本身就供给了 fileupload 包 :/jakarta.apache.org/commons/fileupload/。文件上传、表单项处理、效率问题根本上都考虑到了。在 struts 中就使用了这个包,不过是用 struts 的方式另行封装了一次。这里我们直接使用 fileupload 包。

8、至于 struts 中的用法,请参阅 struts 相关文档。这个处理文件上传的 servelet 主要代码如下:public void doPost( ServletRequest request, ServletResponse response ) DiskFileUploaddiskFileUpload = new DiskFileUpload();/ 允许文件最大长度diskFileUpload.setSizeMax( 100*1024*1024 );/ 设置内存缓冲大小diskFileUpload.setSizeThreshold( 4096 );/ 设置临时名目diskFileU

9、pload.setRepositoryPath( “c:/tmp“ );List fileItems = diskFileUpload.parseRequest( request ); Iterator iter = fileItems.iterator();for( ; iter.hasNext(); ) FileItemfileItem = (FileItem) iter.next(); if(fileItem.isFormField() ) / 当前是一个表单项out.println( “form field : “ + fileItem.getFieldName() + “, “ +

10、fileItem.getString() ); else / 当前是一个上传的文件String fileName = fileItem.getName(); fileItem.write( new File(“c:/uploads/“+fileName) );为简单起见,特别处理,文件重命名等细节没有写出。3、客户端发送内容构造假设承受文件的网页程序位于 :/192.168.29.65/upload_file/UploadFile.假设我们要发送一个二进制文件、一个文本框表单项、一个密码框表单项。文件名为 E:s , 其内容如下:其中的 XXX 代表二进制数据,如 01 02 03a bbXX

11、Xccc客户端应当向 192.168.29.65 发送如下内容:POST /upload_file/UploadFile /1.1 Accept: text/plain, */*Accept-Language: zh-cn Host: 192.168.29.65:80Content-Type:multipart/form-data;boundary=7d33a816d302b6User-Agent: Mozilla/4.0 (compatible; OpenOffice.org) Content-Length: 424Connection: Keep-Alive-7d33a816d302b6C

12、ontent-Disposition: form-data; name=“userfile1“; filename=“E:s“Content-Type: application/octet-stream abb XXXccc-7d33a816d302b6Content-Disposition: form-data; name=“text1“ foo-7d33a816d302b6Content-Disposition: form-data; name=“password1“ bar-7d33a816d302b6-此内容必需一字不差,包括最终的回车。留意:Content-Length: 424 这里的 424 是红色内容的总长度包括最终的回车 留意这一行:Content-Type: multipart/form-data; boundary=7d33a816d302b6依据 rfc1867, multipart/form-data 是必需的.-7d33a816d302b6 是分隔符,分隔多个文件、表单项。其中 33a816d302b6是即时生成的一个数字,用以确保整个分隔符不会在文件或表单项的内容中消灭。前面的-7d 是 IE 特有的标志。Mozila 为71用手工发送这个例子,在上述的 servlet 中检验通

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号