我正在尝试将照片jpg从PhoneGap应用(javascript)上传到Google App Engine(php),将参数存储在数据库中,将照片存储到Google云端存储中。除照片文件传输外所有工作。
我正在使用的上传功能是PhoneGap的文件传输示例http://docs.phonegap.com/en/edge/cordova_file_file.md.html#FileTransfer的典型代表。
function uploadPhoto(imageURI) {
// imageURI is photo local url file:///Users/me/Library/...etc ... .jpg
// from navigator.camera.getPicture function
// prepare post variables
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
var params = new Object();
params.foo = "foo";
options.params = params;
options.chunkedMode = false;
// upload image and option
var ft = new FileTransfer();
ft.upload(imageURI, 'http://myapphere.appspot.com/php/myphoto.php', function(r){
// do stuff with r.response
},function(error){
// error
},options,true);
}
在Google App Engine服务器上,参数变量通过正常 - 似乎没有将它传递给$ _FILE文件。
/* php/myphoto.php */
// option variables are passed - this works
$foo = $_POST["foo"];
// but it seems the $_FILES is empty?
$gs_name = $_FILES["file"]["tmp_name"]; // <-- not transferring?
$fileName = 'test.jpg';
$moveResult = move_uploaded_file($gs_name, "gs://mybucket/".$fileName);
文件test.jpg存储在mybucket中(一个小的空白二进制/八位字节)。作为测试,我在GAE上创建了一个HTML表单来上传文件图像和move_upload_file $ _FILE到mybucket,它可以工作。这是从javascript应用程序转移$ _FILES,我无法弄清楚。 (我知道Google Cloud Storage JSON API objects.insert,但在这里我想从phonegap html / javascript转到Google App Engine PHP页面来处理传递的数据)。