AngularJS アプリでファイルをアップロードするためにng-flowを使用しています。ng-flowを介して複数のファイルをアップロードするとともに、データを正常に保存できます。ただし、データをクエリして JSON 経由で取得する場合、各行の ng-flow オブジェクトにファイルを追加する方法がわかりません。各ファイルは、JSON 文字列でエンコードされた base 64 です。
明確にするために、私は各井戸を取得しており、各井戸には名前、場所、許可など、および複数の画像があります。ウェルのすべての属性が、画像を除いて DOM に正常に取り込まれます。
HTML:
...
<div flow-init flow-name="well.flow">
<span class="btn" flow-btn flow-attrs="{accept:'image/*'}">Upload File</span>
<table>
<tr ng-repeat="file in well.flow.files">
<td>{{ $index+1 }}</td>
<td>{{ file.name }}</td>
<td>{{ file.msg }}</td>
<td><span ng-click="file.cancel()"><i class="icon-remove"></i></span></td>
</tr>
</table>
</div>
AngularJS コントローラー内:
wellsFactory.getData($scope.wellsParams).then(function(data){
angular.forEach(data.wells, function(wells, wKey){
if(wells.files){
var list = [];
angular.forEach(wells.files, function(files, fKey){
var binaryFile = atob(files.file);
var byteNumbers = new Array(binaryFile.length);
for (var i = 0; i < binaryFile.length; i++) {
byteNumbers[i] = binaryFile.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var blob = new Blob([byteArray.buffer], {type: "image/png"});
list[fKey] = blob;
});
/* Add blob files to wells ng-flow */
data.wells[wKey].flow.files = list; /* breaks */
//** How do I add ng-flow files? **//
}
});
$scope.wells = data.wells;
});
画像ファイルを blob として設定した後でも、画像ファイルの出力 JSON base64 データを正常にテストしました。
/* Test Each File (within foreach) */
...
var reader = new FileReader();
reader.onload = function(e){
console.log(e.target.result);
};
reader.readAsDataURL(blob);
...
各行の ng-flow オブジェクトに blob ベースの画像ファイルを適切にロードするにはどうすればよいですか?