2017-01-31 19 views
0

NativeScriptのカメラモジュールで写真を撮り、それをFirebaseにアップロードしようとしていますが、動作していないようです。 imageTakenおよびfileLocationは、falseおよびundefinedとなる。私のコードに何か問題がありますか? (TypeScriptで書かれている)NativeScriptからFirebaseに画像をアップロード

import fs = require('file-system') 
import frame = require('ui/frame') 
import utils = require('utils/utils') 
import observableModule = require('data/observable') 
import imageSource = require("image-source") 
import camera = require('camera') 
import image = require('ui/image') 
import { 
    ImageFormat 
} from 'ui/enums' 
import view = require("ui/core/view") 
import firebase = require('nativescript-plugin-firebase') 
var dialog = require('nativescript-dialog') 
var pd = new observableModule.Observable() 

var imageContainer 
var imageTaken = false 
var fileLocation 

exports.loaded = args => { 
    var page = args.object 
    imageContainer = view.getViewById(page, "img") 

    pd.set('imageTaken', imageTaken) 
    page.bindingContext = pd 
} 

exports.takePhoto = args => { 
    const options = { 
    width: 300, 
    height: 300, 
    keepAspectRatio: true 
    } 
    camera.takePicture().then((picture) => { 
    console.log('Take Picture') 
    var image = new image.Image() 
    image.imageSource = picture 
    imageContainer.imageSource = picture 
    let savePath = fs.knownFolders.documents().path; 
    let fileName = 'img_' + new Date().getTime() + '_' + this.currentUserId.getValue() + '.' + ImageFormat.jpeg 
    let filePath = fs.path.join(savePath, fileName) 
    console.log(filePath) 
    picture.saveToFile(filePath, ImageFormat.jpeg) 
    fileLocation = filePath 
    imageTaken = true 

    }) 
} 

exports.sendPhoto = args => { 
    console.log(imageTaken) 
    console.log(fileLocation) 
    imageTaken ? upload(Math.random() + '-' + Date.now()) : dialog.show({ 
    title: "Error", 
    message: "Please take a photo first.", 
    okButtonText: "OK" 
    }) 
} 

const upload = (remoteFileName) => { 
    firebase.uploadFile({ 
    remoteFullPath: 'uploads/images/' + remoteFileName, 
    localFile: fs.File.fromPath(fileLocation), 
    localFullPath: fileLocation, 
    onProgress: function (status) { 
     console.log("Uploaded fraction: " + status.fractionCompleted) 
     console.log("Percentage complete: " + status.percentageCompleted) 
    } 
    }).then(
    uploadedFile => { 
     console.log("File uploaded: " + JSON.stringify(uploadedFile)) 
    }, 
    error => { 
     console.log("File upload error: " + error) 
    } 
) 
} 

答えて

1

古いカメラモジュールは時代遅れです。代わりにnativescript-cameraを使用してください。 Android API23 +では、明示的にアクセス権の実行をリクエストする必要があります。 nativescriptカメラは、それが最終的に

import * as camera from "nativescript-camera"; 
camera.requestPermissions(); 

nativescriptカメラプラグインhere

+0

の詳細に行われていると、これはそれを解決したものでした。ありがとう!ちょうど尋ねると、あなたはなぜ彼らはまだドキュメントのカメラを持っているか知っていますか? – hashtagmemes

+0

昨日から、カメラの記事がこのhttps://docs.nativescript.org/hardware/cameraで更新されました。NativeScriptのドキュメントはリリースごとに更新されていますので、古い記事がアクティブであった理由が昨日です(新しいリリースが発表された) –

関連する問題