使用http 上传文件的原理

2023-11-07

可参考的文章有:

http://www.cnblogs.com/kaixuan/archive/2008/01/31/1060284.html

通过 http 协议上传文件(rfc1867协议概述,jsp 应用举例,客户端发送内容构造)

1、概述
在最初的 http 协议中,没有上传文件方面的功能。 rfc1867 (
http://www.ietf.org/rfc/rfc1867.txt
) 为 http 协议添加了这个功能。客户端的浏览器,如 Microsoft IE, Mozila, Opera 等,按照此规范将用户指定的文件发送到服务器。服务器端的网页程序,如 php, asp, jsp 等,可以按照此规范,解析出用户发送来的文件。
Microsoft IE, Mozila, Opera 已经支持此协议,在网页中使用一个特殊的 form 就可以发送文件。
绝大部分 http server ,包括 tomcat ,已经支持此协议,可接受发送来的文件。
各种网页程序,如 php, asp, jsp 中,对于上传文件已经做了很好的封装。

2、上传文件的实例:用 servelet 实现(http server 为 tomcat 4.1.24)
1. 在一个 html 网页中,写一个如下的form :

<form enctype="multipart/form-data"  action="http://192.168.29.65/UploadFile" method=post >

     load multi files :<br>

     <input name="userfile1" type="file" ><br>

     <input name="userfile2" type="file"><br>

     <input name="userfile3" type="file"><br>

     <input name="userfile4" type="file"><br>

     text field :<input type="text" name="text" value="text"><br>

     <input type="submit" value=" 提交 "><input type=reset>

</form>

 

2. 服务端 servelet 的编写
现在第三方的 http upload file 工具库很多。Jarkata 项目本身就提供了fileupload 包http://jakarta.apache.org/commons/fileupload/  。文件上传、表单项处理、效率问题基本上都考虑到了。在 struts 中就使用了这个包,不过是用 struts 的方式另行封装了一次。这里我们直接使用 fileupload 包。至于struts 中的用法,请参阅 struts 相关文档。
这个处理文件上传的 servelet 主要代码如下:

public void doPost( HttpServletRequest request, HttpServletResponse response ) {

     DiskFileUpload diskFileUpload = new DiskFileUpload();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用http 上传文件的原理 的相关文章

  • 安全地向 RESTFUL API 提供凭据

    我创建了一个 RESTful 服务器应用程序 它可以在有用的 URL 例如 www site com get someinfo 上处理请求并提供服务 它是在春天建造的 但是 这些访问受密码保护 我现在正在构建一个客户端应用程序 它将连接到这
  • 在 iOS 中从 Amazon S3 请求校验和 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我开发了一个 iOS 应用程序 可以将更大的视频上传到 AWS S3 服务器 我已将 MD5 校验和集成到我的 put 请求中 以便在
  • CodeIgniter 上传大文件

    我已经设置了 codeigniter 来上传 function stage1 ini set upload max filesize 200M ini set post max size 200M ini set max input tim
  • Spring Security 与 Struts 的集成

    我正在尝试在一个简单的应用程序中将 spring security 与 struts1 2 使用 LDAP 集成 我有 applicationContext security xml
  • 在上传到远程网站期间缩小/调整视频大小

    我有一个用 Ruby on Rails 编写的 Web 应用程序 它使用表单将视频从用户上传到服务器 我实际上使用直接上传到 s3 的 jquery 上传器 但我认为这不相关 为了减少视频的上传时间 我想缩小它的大小 例如如果视频大小为 1
  • 需要用Java将文件上传到S3上

    我最近开始在 AWS 上工作 我目前正在开发 S3 存储的上传功能 根据我的理解 可以有两种方法将文件上传到 S3 客户端的文件上传到我的服务器 我使用我的凭据将此文件上传到 S3 服务器 我还可以向客户端隐藏此信息 因为我不会显示上传详细
  • Spring Boot加载图片后上传

    我能够将图像上传到服务器 并且可以在路径中找到我的图像 static images gallery 现在 当我尝试加载上传的图像时 应用程序不显示主题 仅在应用程序重新启动后 我遇到了同样的问题 因为启动时加载了静态目录 上传路径一定要放在
  • PHP Ajax上传进度条

  • 上传前压缩相机图像

    我正在使用这段代码 来自www internetria com http www internetria com blog 2013 04 12 android enviar imagenes por webservice 拍照并上传到服务
  • YouTube API 身份验证 - Iphone

    我正在尝试使用 youtube api 的示例代码上传视频 当我按下上传按钮时 进度条完成其过程 但是一旦到达终点我就会收到错误 错误描述如下 YouTubeTest 2149 f803 错误 错误 Domain com google GD
  • 在php中生成随机字符串作为文件名[重复]

    这个问题在这里已经有答案了 我将如何创建与文件名一起使用的随机文本字符串 我正在上传照片并在完成后重命名它们 所有照片都将存储在一个目录中 因此它们的文件名必须是唯一的 有这样做的标准方法吗 有没有办法在尝试覆盖之前检查文件名是否已经存在
  • 使用 PHP SDK 在亚马逊 S3 上上传文件

    我正在尝试通过 PHP SDK 在我的亚马逊 S3 存储桶上上传文件 但是我的脚本不起作用 我有一个空白页面 没有任何错误或异常消息 编辑 在 php ini 中启用 display error 后 我有下面的错误消息 看起来 sdk 在我
  • php 如何使用 getimagesize() 检查上传时的图像类型[重复]

    这个问题在这里已经有答案了 可能的重复 GetImageSize 在应该返回 FALSE 时没有返回 FALSE https stackoverflow com questions 10464948 getimagesize not ret
  • 使用javascript批量上传请求到Google Cloud Storage

    我正在尝试使用 javascript 在批量请求中将多个图像上传到谷歌云存储 我在用着https developers google com storage docs json api v1 how tos batch example ht
  • PHP 一次只能看到 20 个上传文件

    当我尝试一次上传超过 20 个文件时 网络服务器只能看到前 20 个文件 任何其他文件都会被忽略 问题是什么 简单的代码可以尝试
  • javax.el.PropertyNotFoundException:在 java.lang.String 类型上找不到属性“tname”

    我之前使用的是 scriptlet 但现在我改用了 mvc 我无法检索 JSP 页面上的值并收到错误 javax el PropertyNotFoundException Property tname not found on type j
  • 上传非常大的文件(>5GB)

    我需要你的帮助 我想用 HTML JQuery 和 PHP 创建一个上传脚本 是否可以编写一个可以上传非常大的文件 gt 5 GB 的脚本 我已经尝试使用 FileReader FormData 和 Blobs 但即使使用这些 我也无法上传
  • PHP 文件上传帮助

    div align center div 这是我的代码
  • 已做出回应

    我有一个取消按钮 用于刷新值 现在我已将它们转换为刷新或重新加载页面并移至只读页面 因此更改了取消按钮来调用这样的函数 function chkArea var url
  • 扫描 PHP 上传的病毒

    我目前正在使用以下代码来扫描作为申请表的一部分上传的文件 safe path escapeshellarg dir file command usr bin clamscan stdout safe path out int 1 exec

随机推荐

  • selenium4新版本使用指南

    提示 本文默认你已经学会使用selenium的旧版本 因此对一些可以直接搜索到很多的内容 你应该是已经学会的 文章目录 前言 一 设置驱动 1 selenium4推荐方法 2 传统方法 二 查找元素 等待元素出现 三 动作API 暂停 pa
  • Qt + QR-Code-generator 生成二维码

    0 前言 之前使用 libgrencode 生成二维码 LGPL 协议实在不方便 所以需要找一个 github 星星多的 代码简单最好 header only 协议最好是 MIT 或者兼容协议而不是 GPL 或者 LPGL QR Code
  • 【无法联网】电脑wifi列表为空的解决方案

    打开电脑 发现wifi列表为空 点击设置显示未连接 首先检查是不是网卡驱动有问题 cmd devmgmt msc 找到网络适配器 看看网卡前面是否有感叹号 如果没有则说明网卡没问题 有问题则重装驱动 看看网络协议是否设置正确 找到 控制面板
  • android开机自启动APP及使用adb命令测试

    android开机自动运行APP实现方式其实很简单 在android系统运行时 会发出 android intent action BOOT COMPLETED 这个系统广播 因此我们监听它 并进行打开APP的操作即可 现在大多数的andr
  • Allegro导入网表报错

    文章首发于同名微信公众号 DigCore 欢迎关注同名微信公众号 DigCore 及时获取最新技术博文 E SPMHGE 82 Pin numbers do not match between symbol and component Ru
  • Linux 查看java进程的命令

    刚才去了微众税银面试 面试官赶时间 导致我的语速也快了起来 其中有个问题没答上 那就是 Linux下查看java进程的命令 回来做个记录 以防还有公司问到 之前工作上遇到Linux还是太少了 服 Linux下查看和停止所有java进程 在L
  • 教务管理系统乱码服务器不可,青果教务管理系统Post登录(二)

    承接上一篇贴子的后续 这次成功完成了预想功能 其实本来对学校的教务系统已经没什么兴趣了 但是前两天从吾爱上面看到一篇帖子 在post登录后获取自己的成绩直接对接短信平台 实现每当有新成绩公布的时候可以直接短信通知自己 这一下就又激起了我的兴
  • redis远程连接不上(转)

    解决redis远程连接不上的问题 redis现在的版本开启redis server后 redis cli只能访问到127 0 0 1 因为在配置文件中固定了ip 因此需要修改redis conf 有的版本不是这个文件名 只要找到相对应的co
  • jquery数组求和

    fn sum function fun var v 0 if this length gt 0 this each function index item if fun null fun undefined typeof fun funct
  • mysql binlog 使用指南

    MySQL binlog 详解 1 前言 日志是把数据库的每一个变化都记载到一个专用的文件里 这种文件就叫做日志文件 Mysql默认只打开出错日志 因为过多的日志将会影响系统的处理性能 在5 0前支持文本格式和二进制格式 5 0后只支持二进
  • 【c++】private里面的变量可以间接访问和修改嘛?

    五月出差频繁 只有趁着周末不加班拿出一点时间记录下最近学到的东西 下面是正文 我们都知道 C 中有一个叫访问权限的知识点 被定义在 private 中的方法或者对象理论上是无法直接访问的 被定义在 public 中的方法或者对象理论上是可以
  • RabbitMQ的安装

    一 安装erlang环境 官网下载 http www erlang org downloads 这个文件其实不是gz格式的 使用file otp src 20 1 tar gz可以查看它的真实数据格式 解压 tar xvf otp src
  • 单片机变量所储存的变量值转化为字符

    最近做了一个设计 需要使用单片机设计一个距离采集系统 并将采集的距离大小通过语音播报出来 同时通过蓝牙传至手机端 不论是蓝牙还是语音播报都涉及到将变量中所储存的数值大小转化为字符串 编写代码环境 单片机 STM32F103C8T6 编写软件
  • qt学习笔记1:创建一个qt项目及一些基础知识

    1 新建第一个项目 New Project gt qt widges application 给项目创建名称 名称不能有中文和空格 创建路径中也不能有中文路径 不会报错但是运行时会报错 再下一步 到Kits 中文构建套件 用于选择编译套件
  • C++学习(三十三)运算符优先级

    C语言优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 数组下标 数组名 整型表达式 左到右 圆括号 表达式 函数名 形参表 成员选择 对象 对象 成员名 gt 成员选择 指针 对象指针 gt 成员名 2 负号运算符 算术类
  • 解决Glide在一个imageview上更换图片时会闪的问题

    Glide with MainActivity this load str msg what 1 dontAnimate placeholder iv getDrawable 原理 1 使用dontAnimate取消图片切换动画 2 使用p
  • scrapy屏幕log日志输出保存到txt文本中

    在使用scrapy框架的时候 因为scrapy在屏幕上面输出的日志一直在跑 有些错误又抓不到 无奈只能先把log日志放在文件中 慢慢进行错误日志的分析 如图所示 我们需要设置的地方只在settings py文件夹中进行设置就可以了 LOG
  • 电商系统下单锁库存java实现,【239期】面试官:如何使用Redis实现电商系统的库存扣减?...

    在日常开发中有很多地方都有类似扣减库存的操作 比如电商系统中的商品库存 抽奖系统中的奖品库存等 解决方案 使用mysql数据库 使用一个字段来存储库存 每次扣减库存去更新这个字段 还是使用数据库 但是将库存分层多份存到多条记录里面 扣减库存
  • 全国计算机等考试体系2018,2018年陕西全国计算机等级考试体系及方式

    2017年计算机等级考试已经结束 出国留学网为考生们整理了2018年陕西全国计算机等级考试体系及方式 希望能帮到大家 想了解更多资讯 请关注我们 小编会第一时间更新哦 2018年陕西全国计算机等级考试体系及方式 一 报名与考场编排 一 报名
  • 使用http 上传文件的原理

    可参考的文章有 http www cnblogs com kaixuan archive 2008 01 31 1060284 html 通过 http 协议上传文件 rfc1867协议概述 jsp 应用举例 客户端发送内容构造 1 概述