我在javascript中实例化一个新的文件对象时遇到了麻烦。
这是我正在尝试做的一般要点。存在期望“文件”类型对象的客户端代码。我需要访问位于服务器上的文件(game.smc),将其下载到本地计算机并将其提供给客户端代码。
我做了一些研究,发现创建一个新的blob对象是第一步。但是在下面的代码中,blob对象保持为null并且永远不会被填充。 xhr.open中的路径是否需要包含整个URL?也许我在这里错过了一个完整的概念。
var blob = null;
var xhr = new XMLHttpRequest();
xhr.open("GET", "/Roms/game.smc");
xhr.responseType = "blob";
xhr.onload = function()
{
blob = xhr.response;
}
xhr.send();
一旦我可以填充blob对象,我就可以将其转换为文件对象。
function blobToFile(theBlob, fileName) {
theBlob.lastModifiedDate = new Date();
theBlob.name = fileName;
return theBlob;
}
答案 0 :(得分:0)
这就是我最终要做的事情。演示如何获取blob对象以及将其转换为文件类型。
function autoLoadGame(fileName) {
var gameLocation = '/Content/Roms/Snes/' + fileName;
var blob = null;
var xhr = new XMLHttpRequest();
xhr.open("GET", gameLocation, true);
xhr.onreadystatechange = function () {
if (xhr.readyState == XMLHttpRequest.DONE) {
var blob = xhr.response;
var file = new File([blob], fileName, { type: '', lastModified: Date.now() });
snes_readfile(file);
}
}
xhr.responseType = "blob";
xhr.send();
}