这曾经在Firefox Quantum之前在Firefox中运行(第57版)。该代码仍可在Chrome中使用,但不再适用于Firefox。
用户从他的本地计算机中选择一个图像,然后创建一个带有一些JSON信息的Blob
和该文件,如下所示:
var fileElement = $("<input>").attr({
"type": "file",
"accept": "image/*"
}).hide()
.on("change", function () {
var fileList = this.files;
if (fileList.length > 0) {
var file = fileList[0];
var str = JSON.stringify({
"uid": info.uid,
"utype": info.utype
});
var blob = new Blob([str.length, str, file]);
WebSocketConnection.sendMessage(blob);
}
});
然后在服务器端,我提取JSON字符串并获取我想要的信息,然后从文件中提取mime类型,并根据该mime类型将文件保存在服务器磁盘上,并使用其中一个扩展{{1} }。
由于Firefox量程不起作用且接收的mime类型为[".png", ".jpg", ".jpeg", ".gif"]
这是一个Firefox错误还是在api中做了一些更改,我需要在代码中添加一些更改?
答案 0 :(得分:0)
我设法让它发挥作用。我仍然认为这是一个错误,因为它曾经在Firefox旧版本中工作。
最后,我将所选文件转换为ArrayBuffer
,然后使用ArrayBuffer
创建了Blob文件。我还更新了主要问题代码,以便更好地了解正在发生的事情。
var fileElement = $("<input>").attr({
"type": "file",
"accept": "image/*"
}).hide()
.on("change", function () {
var fileList = this.files;
if (fileList.length > 0) {
var file = fileList[0];
var str = JSON.stringify({
"uid": info.uid,
"utype": info.utype
});
var reader = new FileReader();
reader.onload = function () {
var arrayBuffer = this.result;
var blob = new Blob([str.length, str, arrayBuffer]);
WebSocketConnection.sendMessage(blob);
}
reader.readAsArrayBuffer(file);
}
});