我们可以将二进制原始数据添加到<form>吗?

巴吉

是否可以将二进制原始数据添加到表单,例如在此data字段中:

<form action="/upload" method="post">
<input type="hidden" id="data" />
<input type="submit" />
</form>

在我的用例中,我想使用将图像从导出canvas到JPEG toDataURL,然后将base64解码为二进制数据然后将二进制数据添加到中<form>,以准备提交。

为什么我想只是张贴的base64编码的数据?因为我想节省客户端上载时间/服务器上载带宽的1/3,并且众所周知base64大于二进制数据1.333。

维尼

如果这是你的表格

<form action="something.php"  method="post" enctype="multipart/form-data">
  <input type="text" name="firstname" value="Peter">
  <input type="text" name="lastname" value="Quill">
  <input type="file" name="photo">
  <input type="submit" value="Submit">
</form> 

它是这样发送的

------WebKitFormBoundarybHHp9cSVfgrymPhN
Content-Disposition: form-data; name="firstname"

Peter
------WebKitFormBoundarybHHp9cSVfgrymPhN
Content-Disposition: form-data; name="lastname"

Quill
------WebKitFormBoundarybHHp9cSVfgrymPhN
Content-Disposition: form-data; name="photo"; filename=""
Content-Type: application/octet-stream


------WebKitFormBoundarybHHp9cSVfgrymPhN--

每个表单字段的值都被包围,浏览器会智能地计算边界,因为它会遍历整个表单文本框,文本区域等(包括文件输入的原始文件字节流),以避免边界分隔符冲突。浏览器会在边界前添加前缀带有各自的供应商前缀(如webkit),但最后始终是可靠的分隔符。

现在,即使您可以进行低级的数据组装,但是如果碰巧需要输入文件,创建一个真正可靠的定界符将是一项繁重的任务。这就是为什么您应该让浏览器处理此类建议的基于Formdata的解决方案配合得很好。

enctype='multipart/form-data'是唯一一种发送数据的机制,无论其性质如何,所有其他enctype(application/x-www-form-urlencodedtext/plain)仅支持ASCII传输。entype(s)本质上是一种告诉浏览器应使用哪种方案来提交表单的方法,但是该方案本身并不限于单纯的表单,因为您可以看到使用相同表单的Formdata。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们可以使用地图搜索而不是二进制搜索吗?

我们可以将方法添加到引用匿名类型成员的匿名类型吗?

我可以直接通过HTTP发送二进制数据吗?

我们可以将putImageData而不是fromURL添加到织物画布中吗

我们可以将http响应标头直接添加到html页面中吗

我们可以将主键添加到集合数据类型吗?

我们可以将Flutter模块添加到现有的Android Studio项目中吗?

我们需要公证框架(.framework),dylib和二进制文件吗?

我们可以将功能作为道具添加到array.map(item,index)中的每个项目吗

我们可以将私有数据收集添加到现有网络中的频道吗

我们可以使用SQL查询将列添加到AWS Athena中的现有表吗?

当与推荐项目的相关性为二进制形式时,我们可以使用NDCG作为推荐系统指标吗?

我可以使用Invoke-WebRequest将二进制数据写入文件并仍然获取状态代码吗?

我们可以根据请求参数将验证添加到请求正文中吗

我可以在C ++中使用istream读取二进制数据吗?

我们可以将元素添加到列表标题吗?

这个<form>元素会妨碍我们的排名吗?

将框架添加到项目文件夹会增加二进制文件的大小吗?

Spring Data- MongoRepository:我们可以将二进制类型用作_id吗?

我可以提取调试时可以检查的二进制数据吗?

我们可以在不使用fopen的情况下用C打开二进制文件吗?

我们可以将UITableView添加到自定义UITableViewcell吗?

我们可以将文件名修改后的文件添加到zip存档中吗

URL #anchor可以包含二进制数据吗?

我可以执行驻留在数据段(ELF二进制)中的代码吗?

我们可以将 Ubuntu 分区添加到包含 Windows 10 存储池的驱动器吗?

我们可以将私有 DNS 添加到 Azure 数据库以完全限制其从 Internet 访问吗?

我们可以将函数“文本”的图例添加到 matlab 吗?

我们可以将列表作为值添加到 redis 中的排序集吗?