1
アプリケーションのすべてのタイプのファイルをアップロードする必要があります。画像の高さと幅を取得する必要があります。コードタイプのMediaType.ALLMEDIAから "file:/// storage"パスを取得する
$scope.uploadFile = function(){
$scope.imageUploading = true;
var options = {
quality: 70,
//~ targetWidth: 1005,
//~ targetHeight: 693,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
mediaType: Camera.MediaType.PICTURE,
correctOrientation: true
};
$cordovaCamera.getPicture(options).then(function(imageData) {
imageData = imageData.split('?');
var imageURI = imageData[0];
// This function is called once an imageURI is rerturned from PhoneGap's camera or gallery function
window.resolveLocalFileSystemURL(imageURI, function(fileEntry) {
fileEntry.file(function(fileObject){
// Create a reader to read the file
var reader = new FileReader();
// Create a function to process the file once it's read
reader.onloadend = function(evt) {
// Create an image element that we will load the data into
var image = new Image()
image.onload = function(evt) {
// The image has been loaded and the data is ready
var image_width = this.width
var image_height = this.height
if(parseInt(image_width) < confArr.image_sizes.portfolio.large.w || parseInt(image_height) < confArr.image_sizes.portfolio.large.h){
Auth.toastMessage($rootScope.appMainLang.formvalidation.upload_resolution_limit.replace('%s',parseInt(confArr.image_sizes.portfolio.large.w)),'long','center');
$scope.imageUploading = false;
$ionicLoading.hide();
}else{
$scope.imageUploading = true;
$scope.jrCrop(imageURI);
}
image = null
}
// Load the read data into the image source. It's base64 data
image.src = evt.target.result
}
// Read from disk the data as base64
reader.readAsDataURL(fileObject)
}, function(){
Auth.toastMessage("There was an error reading or processing this file.","long", "center");
})
})
}, function(err) {
$scope.imageUploading = false;
$ionicLoading.hide();
// Auth.toastMessage(Auth.getlocal("timeoutText","string"),"long", "center");
});
}
Iは MEDIATYPE使用する場合:上記のコードでCamera.MediaType.PICTURE、
それは、ファイルのパスを返す "ファイル:///ストレージ/ .../0 /エミュレート" し、働いています正しく 私は
mediaType: Camera.MediaType.ALLMEDIA
で、ファイルのこのパスに行の上に置き換えて、私はすべての種類のファイルをアップロードする必要があるとすると、「/ストレージ/ ...// 0をエミュレート」になり、それが中に入っていません"window.resolveLocalFileSystemURL"関数。 この後のパスを上記のようなパスに変換する方法はありますか?
これは、「mediaType:Camera.MediaType.ALLMEDIA」 - /storage/emulated/0/download/unnamed.pngを使用して取得しているパスです。 "mediaType:Camera.MediaType.PICTURE"のパスは-file ///storage/emulated/0/android/data/com.myapp/cache/unnamed.png – user1578460
ですので、Camera.MediaType.ALLMEDIAを使用すると、myパスにfile://を追加します。 –
これらの2つのパスは異なりますが、file://を追加すると動作しません。ファイルパスに注意してください。 – user1578460