いつもお世話になっております。
少し前の投稿で、「GCPのOCR機能を使って、その結果を画像とともに保存することをやろうとしていて、OCRを利用する時は画像の解像度が大きいものを使って、保存する際には画像の容量を小さくして保存すること」に関して、「フォームのスペースにcanvasを描画し、そのスケールを調整しておく。 'app.record.create.submit.success’のevent時にcanvasから作成したファイルをPUTする。」ことで対応できたことを記載しました。
ところが、PC画面では、保存後にレコード詳細画面に遷移するので問題ないのですが、モバイル画面では、保存を押しても画面がレコード詳細画面遷移しません(レコード追加画面のままで、保存とキャンセルボタンが表示されたまま)。レコード自体は保存されているので、単に遷移の問題かと思います。→ これは間違いでした。レコードは保存されていますが、リサイズして縮小されて保存されている筈の写真が、元の大きさで保存されていますので、このevent処理そのものがモバイル版だけうまくいっていないようです。
_対応方法をご教示いただけると助かります。_以下コードです。
kintone.events.on([
'mobile.app.record.create.submit.success',
], function(event){
return new kintone.Promise(function(resolve){
// canvasはグローバル変数で、レコード登録画面のcanvasに描画されたものです
canvas.toBlob(function(blob){
var formData = new FormData();
var xhr = new XMLHttpRequest();
formData.append(' __REQUEST_TOKEN__', kintone.getRequestToken());
formData.append('file', blob, file.name);
xhr.open('POST', encodeURI('/k/v1/file.json'));
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.addEventListener('load', function(){
kintone.api('/k/v1/record', 'PUT', {
app: kintone.mobile.app.getId(),
id: event.recordId,
record: {
添付ファイル: {
value: [
{fileKey: JSON.parse(xhr.responseText).fileKey}
]
}
}
}).then(function(){
resolve(event);
});
});
xhr.send(formData);
}, file.type);
});
});