背景・実現したいこと
kintoneアプリに保存されている添付ファイルを一括ダウンロードするため、下記「利用したソースコード」のページを参考にボタンを追加しました。
ダウンロードした際に添付ファイルの名前は、kintoneアプリに登録された時のファイル名そのままになっていますが、ダウンロードした時にどのレコードの分なのかを分かるようにしたいです。
例えば、添付ファイルの名前の最初にレコード番号を追加するなど。
何かいい方法がありましたら、ご教示いただけますと幸いです。
利用したソースコード
kintoneの添付ファイルをJSZipで一括ダウンロードしよう
NKI様
//非同期で1ファイルダウンロードし、zipへ組み込みする関数
function downloadFile(zip, url, filename) {
return new kintone.Promise(function(resolve, reject) {
// getbinarycontent は 非同期でURL からファイルを取得するAPI
// JSZIP util APIを利用
JSZipUtils.getBinaryContent(url, function(err, data) {
if (err) {
reject(err);
}
zip.file(filename, data, {binary: true});
resolve(data);
});
});
}
このfunctionで,ダウンロードした添付ファイルにfilenameをつけてzipにいれているようです.
zip.file(filename, data, {binary: true});
ここのfilenameをいじればうまくいきそうなので,NKI様のコードをたどっていただければと思います.
(NKI様のコードがどうなっているのかわからないので具体的にはちょっと書きづらいです)
NKI さん
利用したソースコードをもとに検証してみましたが、以下関数内の処理を修正するとファイル名を変更できました。
元のコード(kintoneの添付ファイルをJSZipで一括ダウンロードしよう)
修正後
function getFileKeys(json) {
var keys = [];
for (var i = 0; i < json.records.length; i++) {
var record = json.records[i];
var filetype = record[fieldCode];
// 複数添付ファイルが存在する場合あり
for (var j = 0; j < filetype.value.length; j++) {
var file = filetype.value[j];
// ファイル名を変更:{レコードID}-{インデックス}-{元のファイル名}
file.name = [record.$id.value, j, file.name].join('-');
keys.push(file);
}
}
return keys;
}
以上になります。ご参考になれば幸いです。
TO様 川村様
コメントいただきまして、ありがとうございます。
初心者でTO様のコメントでは自分で修正できず、川村様のコードを元に修正しました。
無事ファイル名にレコード番号が追加され、ダウンロード後でも画像とレコードの紐づけができました。
本当にありがとうございました。
system
(system)
クローズされました:
5
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。