画像を取得してサーバーにアップロードするために、PhoneGap (Cordova) を介してアプリをセットアップしようとしています。ここで非常に多くの応答を確認し、それらのコードを試しました。カメラを上げて写真を撮ったり、電話ギャラリーにアクセスしたりできます。しかし、画像をサーバーに送信することはできません。画像を送信しようとしましたが、base64 画像ストリームを送信することさえしました。サーバーに取り込めません。
クライアント側の JavaScript は次のとおりです。
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
}
function ImageUpload() {
this.useExistingPhoto = function(e) {
this.capture(Camera.PictureSourceType.SAVEDPHOTOALBUM);
}
this.takePhoto = function(e) {
this.capture(Camera.PictureSourceType.CAMERA);
}
this.capture = function(sourceType) {
navigator.camera.getPicture(this.onCaptureSuccess, this.onCaptureFaile, {
destinationType: Camera.DestinationType.FILE_URI,
soureType: sourceType,
correctOrientation: true
});
}
this.onCaptureSuccess = function(imageURI) {
var fail, ft, options, params, win;
success = function(response) {
alert("Your photo has been uploaded!");
};
fail = function(error) {
alert("An error has occurred: Code = " + error.code + "\nMessage = "+error.message);
};
options = new FailUploadOptions();
options.fileKey = "file";
options.fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1);
options.mimeType = "text/plain";
params = {
val1: "some value",
val2: "some other value"
};
options.params = params;
ft= new FileTransfer();
ft.upload(imageURI, 'http://style.appdev01.com/app/client-profile.php', success, faile, options);
}
this.OnCaptureFail = function(message) {
alert("Failed because: "+message);
}
};
var imageuploader = new ImageUpload();
2 つのボタンは、クリック時に imageuploader.takePhoto と .useExistingPhoto を呼び出します。
サーバー側には、次の php があります: if(isset($_FILES['file'])) {
$target_path = "/home/style/public_html/images/client_images/app_image.jpg";
move_uploaded_file($_FILES['file']['tmp_name'], $target_path);
$insert = "INSERT INTO
`fut`
SET
`request` = '".serialize($_POST)."',
`file` = '".serialize($_FILES)."'";
$mysql->query($insert);
}
これは、POST および FILE 配列を db に格納して、それらが通過してイメージを作成することを確認するためのものです。
しかし、やはり、サーバーには何も届きません。どんな助けでも大歓迎です。ここやウェブ全体の非常に多くの質問から、このコードの非常に多くのバージョンを試しました。