如何实例化新的文件对象javascript

时间:2017-01-28 21:39:14

标签: javascript blob

我在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;
    }

1 个答案:

答案 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();
}