相关疑难解决方法(0)

javascript如何上传blob?

我在这个结构中有一个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)

javascript jquery html5

95
推荐指数
5
解决办法
13万
查看次数

如何从Blob创建File对象?

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中的错误:

未捕获的类型错误:未能执行addDataTransferItemList:参数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建议的解决方案也不起作用.这是在FirefoxChrome中使用(但无用)的非标准方法.

二进制数据

我试图避免blob,但文件构造函数仍然失败:

  //Canvas to binary
  var …
Run Code Online (Sandbox Code Playgroud)

javascript fileapi

38
推荐指数
3
解决办法
6万
查看次数

标签 统计

javascript ×2

fileapi ×1

html5 ×1

jquery ×1