我在这个结构中有一个blob数据:
Blob {type: "audio/wav", size: 655404, slice: function}
size: 655404
type: "audio/wav"
__proto__: Blob
Run Code Online (Sandbox Code Playgroud)
它实际上是使用最近的Chrome getUerMedia()和Recorder.js记录的声音数据
如何使用jquery的post方法将此blob上传到服务器?我没试过就试过这个:
$.post('http://localhost/upload.php', { fname: "test.wav", data: soundBlob },
function(responseText) {
console.log(responseText);
});
Run Code Online (Sandbox Code Playgroud) DataTransferItemList.add允许您在javascript中覆盖复制操作.但是,它只接受File对象.
我copy活动中的代码:
var items = (event.clipboardData || event.originalEvent.clipboardData);
var files = items.items || items.files;
if(files) {
var blob = Blob.fromDataURL(_this.editor.selection.getSelectedImage().toDataURL("image/png"));
files.add(blob);
}
Run Code Online (Sandbox Code Playgroud)
chrome中的错误:
未捕获的类型错误:未能执行
add上DataTransferItemList:参数1的类型为不File.
new File(Blob blob, DOMString name)在谷歌浏览器中,我根据当前的规范尝试了这个:
var blob = Blob.fromDataURL(_this.editor.selection.getSelectedImage().toDataURL("image/png"));
var file = new File(blob, "image.png");
Run Code Online (Sandbox Code Playgroud)
这里的问题是,谷歌浏览器不太符合规格.
未捕获的TypeError:构造失败
File:非法构造函数
在这种情况下,Firefox也不是:
方法参数缺失或无效.
new File([Mixed blobParts], DOMString name, BlobPropertyBag options)@apsillers建议的解决方案也不起作用.这是在Firefox和Chrome中使用(但无用)的非标准方法.
我试图避免blob,但文件构造函数仍然失败:
//Canvas to binary
var …Run Code Online (Sandbox Code Playgroud)