我一直在尝试将图像文件从 android 上传到我的 php 服务器,但 php 中的 $_FILES 数组始终为空。为了测试这是服务器还是客户端问题,我制作了一个快速的网络表单,该表单提交了与 android 应用程序相同的数据,该表单有效,让我认为 android 代码存在问题。
我的php代码是:
//check for uploaded files
var_dump($_POST);
var_dump($_FILES);
$target_path = "./images/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
和安卓部分:
public void uploadFile(){
File file = new File("/storage/sdcard0/Android/data/xxx/files/Pictures/JPEG20131005.jpg");
RequestParams params = new RequestParams();
try {
params.put("uploadedfile", file);
} catch(FileNotFoundException e) {
Log.e("testcase", "file not found");
}
AsyncHttpClient client = new AsyncHttpClient();
client.post("http://www.example.com/fileUploader.php", params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
System.out.println(response);
}
});
}
我刚回来
array(0){
}
两种var_dump_POST美元); 和var_dump($_FILES);
这是我的表单代码,它有效:
<form action="fileUploader.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="uploadedfile" id="uploadedfile"><br>
<input type="submit" name="submit" value="Submit">
</form>
我也尝试了这个例子和其他一些似乎共享类似代码的例子,但我得到了相同的结果,所以我选择了使用 loopJ,纯粹是因为它是一个久经考验的库。
好的,原来我发送数据的网址是从 www 开始的。 并且服务器在没有 www 的情况下将 302 重定向到同一域。这反过来又出于某种原因删除了所有数据。所以经过几天的拔头发,它只是4个简单的退格......