2

WCSサービスとのインターフェースを取っているので、(バイナリ)ラスターファイルを取得するために、XMLを使用してHTTPPOSTリクエストをサーバーに送信する必要があります。

jQuery ajaxでファイルをダウンロードできましたが、実際のファイルコンテンツをローカルファイルシステムに保存できません。

これを達成する方法はありますか?できれば、ブラウザに組み込まれているダウンロードマネージャを使用してダウンロードを処理したいと思います。

4

1 に答える 1

2

はい、Javascript からファイルを保存することは可能です。基本的に、バイナリ データを含む BLOB を生成し、目的のファイル名を指定するために HTML5 の「ダウンロード」属性を使用してこの BLOB へのリンクを作成し、最後にこのリンクのクリックをシミュレートします。

// Limited browser support! (latest release versions of Firefox & Chrome are OK)
var DownloadAttributeSupport = 'download' in document.createElement('a');
function showSave(data, name, mimetype) {
    var blob, url, builder = new BlobBuilder();
    builder.append(data);
    if (!mimetype) mimetype = "application/octet-stream";
    if (DownloadAttributeSupport) {
        blob = builder.getBlob(mimetype);
        url = URL.createObjectURL(blob);
        var link = document.createElement("a");
        link.setAttribute("href",url);
        link.setAttribute("download",name||"Download.bin");
        // Now I need to simulate a click on the link.
        // IE 10 has the better msSaveBlob method and older IE versions do not support the BlobBuilder interface
        // and object URLs, so we don't need the MS way to build an event object here.
        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);
}

HTML5 をサポートしていないブラウザの代替コードに関するより完全な回答については、https: //stackoverflow.com/a/13059556/2227298 を参照してください <ダウンロード>

于 2013-05-09T11:33:34.517 に答える