Enfin compris après deux jours!
Oui, il est impossible d'utiliser Sencha pour accéder au système de fichiers Android et télécharger des fichiers. J'ai abandonné l'utilisation de la fonction caméra de Sencha et utilisé la fonction de caméra et de transfert de fichiers de phonegap, j'accède au système de fichiers, puis je télécharge en S3.
console.log("camera should be called!");
navigator.camera.getPicture(uploadPhoto,
function(message) { alert('get picture failed'); },
{ quality: 50,
destinationType: navigator.camera.DestinationType.FILE_URI,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY }
);
function uploadPhoto(imageURI) {
console.log(imageURI);
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
var params = new Object();
params.value1 = "test";
params.value2 = "param";
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI, "http://54.251.39.219/index.php", win, fail, options);
}
function win(r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
}
function fail(error) {
alert("An error has occurred: Code = " = error.code);
}
Le fichier PHP côté serveur:
<?php
include('image_check.php');
$msg='';
if($_SERVER['REQUEST_METHOD'] == "POST")
{
echo '<b>S3 File URL:</b>';
$name = $_FILES['file']['name'];
$name = $name . '.jpg';
$size = $_FILES['file']['size'];
$tmp = $_FILES['file']['tmp_name'];
$ext = getExtension($name);
if(strlen($name) > 0)
{
echo "strlen ok";
echo "filename is ".$name;
echo "extension is ".$ext;
if(in_array($ext,$valid_formats))
{
if($size<(1024*1024))
{
include('s3_config.php');
//Rename image name.
$actual_image_name = time().".".$ext;
if($s3->putObjectFile($tmp, $bucket , $actual_image_name,
S3::ACL_PUBLIC_READ))
{
$msg = "S3 Upload Successful.";
echo 'upload successful!';
$s3file='http://'.$bucket.'.s3.amazonaws.com/'.$actual_image_name;
echo "<img src='$s3file' style='max-width:400px'/><br/>";
echo '<b>S3 File URL:</b>'.$s3file;
}
else
echo "S3 Upload Fail.";
}
else
echo "Image size Max 1 MB";
}
else
echo "Invalid file, please upload image file.";
}
else
echo "Please select image file";
}
?>
Remarque, le fichier téléchargé est sans extension, donc je dois lui donner une extension ... Pour la configuration S3, s'il vous plaît se référer à le site officiel S3 pour des choses comme secretkey ...
Vous ne pouvez pas accéder au système de fichiers à partir d'une application Sencha Touch, vous devez utiliser un wrapper natif comme PhoneGap. –
Bonjour TDeBailleul, merci pour vos informations, je l'ai finalement compris, et mis ma solution en réponse :) – zhoubo