文件上传 API:多部分/表单数据与正文中的原始内容?

2024-04-14

我注意到(至少)有两种方法可以通过 API 将文件上传到 HTTP 服务器。

您可以使用multipart/form-data(这是浏览器本机对文件上传 HTML 输入所做的操作),但您也可以POST请求正文中的文件内容(可能具有正确的 Content-Type 请求标头)。

每种方法的优缺点是什么(一般而言,不是通过浏览器)?

例如,多部分请求 – 取决于您在编程环境中使用的 http 或网络库(我在服务器端使用 Node.js,在客户端使用 Swift) – 创建和解析似乎有点复杂。


协议级别上的唯一区别是multipart/form-data请求必须遵守RFC 2388 https://www.ietf.org/rfc/rfc2388.txt而自定义类型的请求正文可以是任意的。

这的实际意义是multipart/form-data请求通常更大:虽然技术上允许客户端使用非 7 位content-transfer-encoding,大多数使用的是base64。 MIME 标头会产生额外的开销,如果上传许多小文件,这些开销可能会成为瓶颈。请注意,支持multipart/form-data现有客户端/库中的文件上传更为普遍。如果您对客户端和中间主机(代理服务器)的功能集不够确定,您应该始终提供它作为后备。特别要记住,如果您正在为第三方设计一个其他开发人员已经熟悉的 APImultipart/form-data并有可用的库来处理它。

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

文件上传 API:多部分/表单数据与正文中的原始内容? 的相关文章

  • 多个资源的 REST 接口使用

    我目前正在通过 http 添加 REST API 到在线服务 我遇到了一个非常简单的问题 我找不到令我满意的答案 我主要有 2 个资源 用户 和 报告 正如您所猜测的那样 报告与用户相关联 与一个且仅一个 我的数据库中的外键 不管怎样 我有
  • 在 Rails 中使用回形针进行 ajax 上传的简单方法?

    我想知道是否有一个简单的方法 例如一个插件 用回形针在 Rails 中进行 ajax 上传 还是我必须从头开始构建它 Cheers 编辑 另外 我正在寻找非闪存解决方案 你可以试试remotipart http os alfajango c
  • IIS 中特定资源的自定义 http 状态代码

    我有一个带有单个 app offline htm 文件的网站 我如何配置 IIS 以使用特定状态代码 例如 209 而不是默认状态代码 200 返回它 使用 ASP Net 的 app offline htm 功能的替代方法是使用IIS U
  • 如何设置http请求的源IP?

    在发送 http 请求之前 我需要设置源 IP 地址 用于 IP 欺骗等 用于建立http连接的类是HTTPURLConnection 我在 stackoverflow 上找到了下面的链接 这非常有用 注册和使用自定义 java net U
  • IIS7 和 HTTP 状态代码处理

    我因试图对 IIS7 集成模式 中的错误呈现进行完整的编程控制而感到非常头疼 我想要做的是给出一个错误 找不到页面 内部服务器错误 未经过身份验证等 将整个请求传输到自定义 ASPX 或 HTML 我更喜欢后者 并使用正确的 HTTP 状态
  • 发送帖子请求多部分表单数据。某些 Microsoft 服务出现错误“超出行长度限制 100”

    该数据是从 Postman 发送的 它的工作原理是 这是一个以 200 状态通过的邮递员请求 POST api upload HTTP 1 1 Host api test contoso se Content Type multipart
  • 文件下载时文件名损坏 (IE)

    我实现了一个简单的文件上传下载机制 当用户单击文件名时 将下载带有以下 HTTP 标头的文件 HTTP 1 1 200 OK Date Tue 30 Sep 2008 14 00 39 GMT Server Microsoft IIS 6
  • Node.js multer 错误:意外的字段

    我在使用 Node js multer 时遇到了麻烦 我想知道是什么原因导致这个问题 我想我设置了正确的名称input name streamfile 客户端和node js的multer之间upload single streamfile
  • Angular:将数据从工厂 ajax 调用传递回我的控制器

    我一直在使用 Angular 并且已经从使用本地数据 似乎工作正常 转向尝试通过工厂中的 ajax 调用来填充我的视图 这是代码 div h2 Get data using a Factory h2 div div div
  • 是否可以要求您的用户清除您网站的 HTTP 严格传输安全 (HSTS)?

    如果您为具有较长生命周期的网站打开 HSTS 但后来决定将其关闭 例如由于第三方软件的问题 是否可以警告用户清除其 HSTS 缓存 要关闭服务器的 HSTS 请发送以下标头 Strict Transport Security max age
  • 当服务器仅从请求中读取标头时,Http 客户端未收到响应

    我在 Java 中搞乱了 HTTP 和套接字 希望你能对此有所了解 当我用 Java SE 11 编写的 HTTP 服务器没有读取整个请求然后响应时 客户端不会收到它或收到错误 这是为什么 在服务器读取整个请求之前 客户端是否无法读取响应
  • 使用 Android 将文件上传到 Django Web 服务

    我正在开发一个与 Django 后端交互的 Android 应用程序 我已经使用 mod wsgi 部署了 Web 服务 并且有许多 Web 服务调用可以工作并且已经过测试 所以我知道一切都应该工作 所有其他呼叫都工作正常 这是我在Andr
  • Node.js 管道化 HTTP 客户端代理?

    Node js 中内置的 HTTP 客户端似乎不支持管道请求 https stackoverflow com a 5776649 362536 然而 我突然想到 也许可以创建一个Agent https nodejs org api http
  • Vagrant 的端口转发不起作用[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我在最后遇到了一个小问题入门指南vagrant http vagrantup com docs getting started ports html
  • 检查 Javascript 中的 URL 是否损坏

    这个问题之前已经发布在 Stack 上 但没有一个具体到我想要理解的内容 检查 URL 是否正确的最简单方法是发送 http Head 请求 但是如何使用它来指定 URL 呢 我在之前的帖子中发现了这一点 function UrlExist
  • gradle - 从 url 下载并解压文件

    从 url 下载和解压文件的正确 gradle 方法是什么 http 如果可能的话 我想防止每次运行任务时重新下载 在ant get可以通过以下方式实现skipexisting true 我当前的解决方案是 task foo ant get
  • 无法更改 php 会话 cookie 名称

    我将现有且成功运行的站点复制到新的开发服务器 新服务器上的登录现在已损坏 我追踪到虽然会话 cookie 已重命名 ini set session name DOMAIN1 浏览器继续将会话 cookie 存储为 PHPSESSID 当我从
  • IE 下的 Http 请求速度变慢

    在我的 javascript 应用程序中工作时 我注意到使用 IE 11 时 相同的 ajax 请求时间最多延长 10 倍 响应大小完全相同 12 6KB 我看到的唯一区别是 IE 添加 Pragma no cache 不是铬 Chrome
  • Spring Boot 文件上传错误请求 400

    你好 我正在使用 Spring Boot 和 AngularJs 编写一个 Web 应用程序 需要一个简单的文件上传 但目前无法正常工作 我已经读到 当 mvc 依赖项存在时 Spring Boot 应该自动配置分段上传本身 从 https
  • $_FILES 未定义 PHP 上传表单。无法弄清楚[重复]

    这个问题在这里已经有答案了 可能的重复 尝试在 PHP 中使用 FILE 时出现 未定义索引 错误 https stackoverflow com questions 8727947 getting undefined index erro

随机推荐