从 WebRTC 发送文件后获取文件类型
Get file type after sending the file from WebRTC
我正在使用 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 来保存文件。
无法从原始数据中获取类型,除非数据中嵌入了一些文件 type/hint(例如 ZIP、PDF)。您还应该创建自己的协议来发送文件名。
我所做的是使用频道的协议属性设置带有扩展名的文件名来传输这些类型的元数据信息。
请注意,几周前 Chrome(至少在我的一个示例应用程序中)不完全支持发送 blob。
我正在使用 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 来保存文件。
无法从原始数据中获取类型,除非数据中嵌入了一些文件 type/hint(例如 ZIP、PDF)。您还应该创建自己的协议来发送文件名。
我所做的是使用频道的协议属性设置带有扩展名的文件名来传输这些类型的元数据信息。
请注意,几周前 Chrome(至少在我的一个示例应用程序中)不完全支持发送 blob。