Javascript window.open文件下载回调

时间:2015-02-03 13:03:25

标签: javascript angularjs

我正在使用window.open(downloadUrl, '_self')从服务器下载tar.gz文件。我想在下载成功(通过使用文件保存对话框中的保存按钮)或用户取消下载(通过使用文件保存对话框中的取消按钮)后,从服务器删除相同的文件。

是否有任何回调机制可以在文件成功写入客户端PC或客户端取消下载后立即获取通知?

1 个答案:

答案 0 :(得分:1)

问题是浏览器一旦启动就处理下载,并且您没有成功下载该浏览器。你可能会考虑像jQuery这样下载文件。也许类似以下内容。这是working jsFiddle

注意:这被认为是实验性技术,并且不支持所有浏览器。

var loc = 'https://ajax.googleapis.com/ajax/libs/angularjs/1.3.11/angular.js';
var url = '';

$('#output > a').on('click', function() {
    URL.revokeObjectURL(url);
    $('#output').empty();
    console.log('Revoked URL.');
});

$('#download').click(function () {
    $.get(loc, function (data) {
        var data = [data];
        var blob = new Blob(data, {
            type: 'application/javascript'
        });
        url = URL.createObjectURL(blob);
        $('#output').append('<a href="' + url + '" download>Save it!</a>');
    })
        .fail(function () {
            // delete the file - probably a $.ajax
            //$.ajax({
            //    url: 'url',
            //    type: 'DELETE'
            //});
        });
});