monacaで画像の保存がうまくいかない
受付中
回答 0
投稿
- 評価
- クリップ 0
- VIEW 1,893
前提・実現したいこと
現在、monaca(2.0.0-rc.1)を利用してアプリを開発中、angularjs(1.4.3)を利用しています。
navigator.camera.getPicture()で画像を取得し、
imgタグで取得の度に表示を行い、
保存用の関数を実行することで、fileEntryを用いて保存を行いたい。
発生している問題・エラーメッセージ
一度保存処理を行った後(この時点で保存処理成功の関数は実行されているが、保存はされていない。)、
もう一度画像をiPhoneのフォトライブラリから選択すると、/tempフォルダ内に保存されている古い画像が表示される。
*同様の処理を行っている箇所が1つあります。差分はimgタグのidのみです。
*保存パスは既に初期化されており、画像が保存されている。選択した画像を保存する際、この画像を上書きしたい。
*構成の問題から、画像を選択する処理と、画像を保存する処理は別コントローラーにある。
*画像の保存先は既にrequestFileSystemでPERSISTENTを取得しており、localSystem('local_path')に保存してあります。
該当のソースコード
<!-- page.html -->
<略>
<img id="icon_img" src ="">
<input ng-click="selectImage();" value="ファイルを選択してください" type="button">
<略>
<!-- select-controller.js -->
<略>
document.getElementById("icon_img").src = localStorage.getItem('local_path') + 'icon.jpg';
$scope.selectImage = function(){
navigator.camera.getPicture(function(imageData){
if(typeof(imageData) != 'undefined' && imageData != '') {
document.getElementById("icon_img").src = imageData;
}
}, function(e){
console.log('error');
},{
quality: 50,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
});
}
<!-- controller.js -->
<略>
var dir;
requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){
dir = fileSystem.root;
},function(e){
console.log('error');
});
var imageData = document.getElementById("icon_img").src;
document.getElementById('test').innerHTML = imageData;
resolveLocalFileSystemURI(imageData,function(fileEntry){
fileEntry.moveTo(dir,'icon.jpg',function(entry){
console.log('move image file is success');
},function(e){
console.log('error');
});
},function(e){
console.log('error');
});
<略>
試したこと
tempファイルの削除処理を画像の保存後に実行した。
directoryEntryで下層のfileEntry全てにremove()を行ったが、
過去のtempファイルは削除出来るものの、保存を行った画像のtempファイルだけ
残ってしまい。次回画像選択時、その画像が表示されてしまう。
補足情報(言語/FW/ツール等のバージョンなど)
monaca(2.0.0-rc.1)
angularjs(1.4.3)
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 89.96%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる