File upload 将文件上载到AmazonS3

File upload 将文件上载到AmazonS3,file-upload,amazon-s3,extjs,sencha-touch-2,File Upload,Amazon S3,Extjs,Sencha Touch 2,我正在使用Sencha Touch 2构建一个移动web应用程序,我需要将该应用程序中的文件上传到Amazon S3,并从S3中获取文件url PHP部分即将完成,我应该如何实现sencha程序,让用户点击一个按钮,打开文件对话框,选择文件并调用PHP文件将文件上传到S3 欢迎任何意见或建议 两天后终于明白了 是的,使用Sencha访问Android文件系统和上传文件是不可能的 我放弃使用Sencha的摄像头功能,使用phonegap的摄像头和文件传输功能,访问文件系统,然后上传到S3 cons

我正在使用Sencha Touch 2构建一个移动web应用程序,我需要将该应用程序中的文件上传到Amazon S3,并从S3中获取文件url

PHP部分即将完成,我应该如何实现sencha程序,让用户点击一个按钮,打开文件对话框,选择文件并调用PHP文件将文件上传到S3


欢迎任何意见或建议

两天后终于明白了

是的,使用Sencha访问Android文件系统和上传文件是不可能的

我放弃使用Sencha的摄像头功能,使用phonegap的摄像头和文件传输功能,访问文件系统,然后上传到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);
        }
服务器端的PHP文件:

<?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";

}

?>

注意,上传的文件没有扩展名,所以我需要给它一个扩展名。。。
对于S3配置,请参考S3官方网站了解secretkey…

您无法从Sencha Touch应用程序访问文件系统,您需要使用PhoneGap之类的本机包装。您好,谢谢您的信息,我终于找到了答案,并将我的解决方案作为答案:)