Javascript 从HTML表单发布blob的表单输入类型是什么?
我想将录制的视频(保存为blob)包含到将发布的表单中 两个问题:Javascript 从HTML表单发布blob的表单输入类型是什么?,javascript,forms,file-upload,html5-video,Javascript,Forms,File Upload,Html5 Video,我想将录制的视频(保存为blob)包含到将发布的表单中 两个问题: 发布blob所需的输入类型是什么 如何将blob分配给该输入类型 我看到的一些建议使用输入类型的文件 示例表格: <form method="POST> <input type="text" class="hidden" name="filename"/> <input type="<UNKNOWN>" class="hidden" name="filedata"/&
<form method="POST>
<input type="text" class="hidden" name="filename"/>
<input type="<UNKNOWN>" class="hidden" name="filedata"/>
<input type="submit" />
</form>
我认为将blob附加到表单的唯一方法是使用FormData()对象 然后使用XMLHttpRequest发送表单,如:
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.send(formData);
因此,如果您需要将此blob与其他表单信息一起发送,您可以将普通表单数据附加到FormData对象并发送整个内容。或者想出其他解决方案,比如只发送blob,让服务器返回与上传相关联的密钥,然后将其插入表单的隐藏元素中,因此,当表单正常提交时,您的服务器可以将该数据附加到以前上载的blob。发现了一个类似的问题,但没有得到任何支持:您可能无法使用普通表单,您可能需要将AJAX与
FormData
一起使用。我的意思是我可以这样做,但我确实希望使用表单。我的一个解决方案是对我得到的数据进行base64编码,并将其放入一个输入字段。这可能是最好的解决方案。另一个问题中的问题显然是blob没有提供生成blob数据的toString()
方法,因此将其存储到输入字段中只需放置一个通用的[object blob]
。
var formData = new FormData();
formData.append("name", blob, filename);
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.send(formData);