是否可以将二进制原始数据添加到表单中,例如在此<div class="group"></div>
字段中:
data
?
在我的用例中,我想使用toDataURL
将图像从<form action="/upload" method="post">
<input type="hidden" id="data" />
<input type="submit" />
</form>
导出为JPEG,然后将base64 解码为二进制数据,然后将二进制数据添加到canvas
,将可以提交。
为什么我不想不仅发布base64编码的数据?因为我想节省客户端上载时间的1/3 /服务器上的带宽,众所周知,base64比二进制数据大1.333。
答案 0 :(得分:1)
如果这是您的表格
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| If you have multiple user tables or models you may configure multiple
| sources which represent each model / table. These sources may then
| be assigned to any extra authentication guards you have defined.
|
| Supported: "database", "eloquent"
|
*/
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'users' => [
'driver' => 'database',
'table' => 'users',
],
],
发送方式
<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>
每个表单字段的值都被包围,浏览器会智能地计算边界,因为它遍历整个表单文本框,文本区域等(包括文件输入的原始文件字节流) 所有这些都是为了避免Delimiter collision。浏览器将使用相应的供应商前缀(例如webkit)在此边界之前加上前缀,最终,它始终是可靠的定界符。
现在,即使您可以进行这种低级的数据组装,但如果碰巧需要输入文件,创建一个真正可靠的定界符将是一项艰巨的任务。这就是为什么您应该让浏览器处理建议的事情基于Formdata的解决方案与此配合得很好。
------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--
是唯一一种发送数据的机制,无论其性质如何,所有其他enctype(enctype='multipart/form-data'
,application/x-www-form-urlencoded
)仅支持ASCII传输。text/plain
本质上是一种告诉浏览器应使用哪种方案来提交表单的方法,但是该方案本身不仅仅限于表单,因为您可以看到使用相同表单的Formdata。