编码下载功能

时间:2018-01-17 11:32:20

标签: javascript json download encode

尝试使用JavaScript encode功能下载一组DICOM (Medical Image)坐标时。但是,当我们按下将处理保存事件的按钮时,它会打开一个“另存为:”窗口,要求我们保存文件,但是当我们按“保存时“它说:

  

失败 - 没有文件

有关问题的更具描述性的信息,图像如下:

enter image description here

我们正在使用CORS (Allow-Control-Allow-Origin) plugin中的Google Chrome,这可能意味着该函数的错误行为。只是想一想这个问题。

这是请求代码:

function download(data, name, type) {
    var link = document.createElement("a");
    var url = new Blob([JSON.stringify({a: '1'}, null, 4)], {type: type});

    link.setAttribute( 'href', url );
    link.setAttribute( 'download', name );

    var event = document.createEvent( 'MouseEvents' );
    event.initMouseEvent( 'click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
    link.dispatchEvent( event );
}

版本说明

  • Google Chrome(v.63.0.3239.132)
  • Allow-Control-Allow-Origin(v.1.0.3)
  • macOS Sierra(v.10.12.6)

1 个答案:

答案 0 :(得分:2)

使用URL#createObjectURL

function download(data, name, type) {
    var url = URL.createObjectURL(new Blob([JSON.stringify({a: '1'}, null, 4)], {type: type}));

    link.setAttribute( 'href', url );
    link.setAttribute( 'download', name );
}

download('data', 'name', 'text/plain');
<a id="link">download</a>