Quantcast
Channel: tyoshikawa1106のブログ
Viewing all articles
Browse latest Browse all 1436

SFDC:RemoteActionと複数ファイルのアップロード

$
0
0

JavaScript Remotingでファイルの一括アップロードする方法についてです。

f:id:tyoshikawa1106:20160131002119p:plain

input type="file"にmultiple属性を宣言することで一括アップロードが可能になります。accept属性でアップロード対象を特定のファイル種別に絞込できます。

<input type="file" name="attamentFile[]" id="attamentFile" multiple="multiple" accept="image/*" />

セットしたファイル情報はdocument.getElementByIdで取得したあと、.filesで取得することができます。

var uploadFile = document.getElementById('attamentFile');
uploadFile.file
// ファイル数 → uploadFile.file.length

f:id:tyoshikawa1106:20160131004046p:plain


ファイルの読み込み処理は『FileReader』を利用します。
f:id:tyoshikawa1106:20160131004430p:plain


注意点としてFileReaderは非同期処理となります。そのため複数アップロードのためにループ処理を行うときは実行順序を意識する必要があります。


AngularJSでは$q.defer()をつかって実行順序を制御できます。
f:id:tyoshikawa1106:20160131004700p:plain


$q.deferについてはこちらが参考になりました。


RemoteActionでApexクラスに値を渡す必要がありますが、Wrapperクラスを用意して渡す方法があります。
f:id:tyoshikawa1106:20160131005229p:plain

f:id:tyoshikawa1106:20160131005254p:plain

f:id:tyoshikawa1106:20160131010027p:plain


という感じでファイルアップロード処理を実装できました。


サンプルコード


Viewing all articles
Browse latest Browse all 1436

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>