以下是App Inventor中的POSTFILE代码: https://www.dropbox.com/s/9gndlxibrg8f85b/uploadimage.jpg?dl=0
这是PHP脚本:
<?php
$ACCESSKEY="uhuh";
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
if($_GET['p']==$ACCESSKEY){
// this is the workaround for file_get_contents(...)
require_once ($_SERVER['DOCUMENT_ROOT'].'/php/PHP_Compat/Compat/Function/file_get_contents.php');
$data = php_compat_file_get_contents('php://input');
$filename = $_SERVER['DOCUMENT_ROOT']."/images/".$_GET['filename'];
if (file_put_contents($filename,$data)) {
if (filesize($filename) !=0) {
echo "File transfer completed";
} else {
//header("HTTP/1.0 400 Bad Request");
echo "Error: File is empty.";
}
} else {
//header("HTTP/1.0 400 Bad Request");
echo "Error: File transfer failed.";
}
} else {
//header("HTTP/1.0 400 Bad Request");
echo "Error: Access denied"; //reports if accesskey is wrong
}
?>
我在这里使用PHP_Compat: http://pear.php.net/package/PHP_Compat/
当我尝试使用桌面模拟器时,它会返回错误“411:需要内容长度”。但是当我尝试在手机上使用apk时,从手机中选择图像并按下UPLOAD后,文件夹(右图)也会在右侧文件夹中的服务器上创建,但大小始终为零,脚本返回“错误传输失败”
甚至打电话给GoDaddy,并认为这可能是由于某些服务器或PHP设置,但他们无能为力。我想也许改变PHP变量upload_tmp_dir可能有所帮助,但不能这样做。
我真的需要为我的应用做这项工作,所以希望有人可以提供帮助。