从WebRTC发送文件后获取文件类型

时间:2015-04-25 15:38:40

标签: javascript download webrtc filereader

我使用WebRTC让两个客户端使用peer.js进行通信

var peer = new Peer(
{
    key: "XXX",
    config: {"XXX": [{ url: "XXXXXXX" }]}
});

我的主要目标是将文件从一个客户端发送到另一个客户端。为此,我使用以下代码:

$("#box").on("drop", function(e)
{
    e.originalEvent.preventDefault();
    var file = e.originalEvent.dataTransfer.files[0];
    console.log(file);
    connection.send(file);
});

在接收端我使用下面的代码:

conn.on("data", function(data)
{
    if (data.constructor === ArrayBuffer)
    {
        var dataView = new Uint8Array(data);
        var dataBlob = new Blob([dataView]);
        var reader = new window.FileReader();
        reader.readAsText(dataBlob); 

        console.log(reader);
    }
}

现在我的问题是我想获取文件类型,以便我可以以正确的格式保存它。我使用download.js来保存文件。

1 个答案:

答案 0 :(得分:1)

除了数据中嵌入了某些文件类型/提示(例如ZIP,PDF)之外,无法从原始数据中获取类型。你应该创建自己的协议来发送文件名。

我所做的是使用channel的protocol属性设置带扩展名的文件名,以传输这些类型的元数据信息。

请注意,几周前Chrome中并不完全支持发送blob(至少在我的一个示例应用程序中)。