ファイルダウンロード

フォローする

Index

ファイルダウンロード

添付ファイルをダウンロードする API です。

HTTP メソッド

GET

URI

https://(サブドメイン名).cybozu.com/k/v1/file.json

ゲストスペース内のアプリの場合

https://(サブドメイン名).cybozu.com/k/guest/(スペースのID)/v1/file.json 

リクエストパラメータ

レコードの取得 API で取得したファイルキーを送信することで、ダウンロードするファイルを指定します。

  • ファイルのアップロード時にレスポンスで返るファイルキーとは異なるため注意してください。
パラメータ名 指定する値 必須 説明
fileKey 文字列 必須 レコードの取得 API 実行時に、レスポンスデータの添付ファイルフィールドにセットされた値です。

リクエストの例

パラメータを HTTP のクエリ文字列で送信する場合

「fileKey」パラメータを、HTTP のクエリ文字列として送信します。

HTTP のクエリ文字列
 fileKey=201201e271307126747563577E9431C85B3B26D4AFB1509193
リクエストヘッダを含んだ例
 GET /k/v1/file.json?fileKey=201201e271307126747563577E9431C85B3B26D4AFB1509193 HTTP/1.1
Host: example.cybozu.com:443
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
  • Content-Typeヘッダは不要です。

パラメータを JSON データで送信する場合(HTTP リクエストのリクエストボディに JSON データをセットする場合)

リクエストボディの JSON データ例は以下の通りです。

リクエストヘッダ
 GET /k/v1/file.json HTTP/1.1
Host: example.cybozu.com:443
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
Content-Type: application/json
Content-Length: 73
  • Content-Type に application/json を指定して下さい。 指定しない場合は JSON が解釈できないため、実行時エラーとなります。
ボディ

レスポンス

Content-Type にアップロードされたファイルの MIME タイプが入り、レスポンスボディにファイルの内容がセットされます。

ダウンロードしたいファイルのファイルキー取得方法

レコードの取得 API で目的の添付ファイルフィールドをレスポンスに含めるリクエストを送信すると、以下の例のような形式でレスポンスが返り、ファイルキーを取得することができます。

関連Tips

JavaScriptサンプル

XMLHttpRequest

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
yanbingms

function downloadEnclosedFile(id) {
var filekey;
query = 'id=' + id;

respForFile = request(app_id, query);
filekey = respForFile.records[id - 1]['pdfdata']['value'][0].fileKey;
console.log("File Key: " + filekey);

//手順1で取得したfileKeyをurlに設定します。
var url = 'https://{domain}.cybozu.com/k/v1/file.json?fileKey=' + filekey;
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.responseType = 'blob';
xhr.onreadystatechange = function(event) {
if ((xhr.readyState == 4) && (xhr.status == 200)) {
//ファイルがレスポンスとして返却されます
console.log("The file retrieved success.");
}
};
xhr.send();

//Blobオブジェクトにファイルを格納
var blob = new Blob([xhr.response], { type: 'application/pdf' });
var url = (window.URL || window.webkitURL);
var blobUrl = url.createObjectURL(blob);
console.log(blobUrl);
var linkFileName = "名刺C.pdf";

if (window.navigator.msSaveBlob) {
console.log("Save blob executed!");
window.open(blobUrl);
window.navigator.msSaveBlob(blob, linkFileName);
} else {
console.log("Else executed!");
window.open(blobUrl);
var e = document.createEvent('MouseEvents');
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
var a = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
a.href = blobUrl;
a.download = linkFileName;
a.dispatchEvent(e);
}
}

すみませんが、このソースコードでダウンロードしたPDFファイルが開けないです。
ご指摘いただけませんか?

Avatar
naokwn

お世話になります。

複数ファイルの同時ダウンロードは可能でしょうか?

その場合、どのような形でリクエストパラメタを送れば良いのでしょうか?

ご教示いただけると幸いです。

naokwnにより編集されました
Avatar
cybozu Development team

naokwn 様

お世話になっております。

XMLHttpRequestのサンプルソースコードをループに回せば複数ファイルを取得できます。
以下は同じ「添付ファイル」フィールドに添付してる複数ファイルを取得する例です:

kintone.events.on("app.record.detail.show",function(event){

function getfile(filekey){
var url = 'https://ドメイン.cybozu.com/k/v1/file.json?fileKey=' + filekey;
var xhr = new XMLHttpRequest();
       xhr.open('GET', url);
       xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
       xhr.responseType = 'blob';
       xhr.onload = function() {
        if (xhr.status === 200) {
        // success
        var blob = new Blob([xhr.response]);
        var url = window.URL || window.webkitURL;
        var blobUrl = url.createObjectURL(blob);
        console.log(blobUrl);
        } else {
        // error
        console.log(xhr.responseText);
        }
    };
        xhr.send();
}

var record = event.record;
var fileKeys = record['添付ファイル'].value;
for (var i = 0; i < fileKeys.length; i++) {
var filekey = fileKeys[i].fileKey;
getfile(filekey);
}

});

また、こちらの記事のコメント欄は当記事に関するフィードバック頂く場所とさせていただいております。
その以外のご質問はcybozu developer コミュニティをご活用ください。
お手数おかけいたしますが、よろしくお願い致します。

ログインしてコメントを残してください。
Powered by Zendesk