Android异步HTTP上传图片到PHP服务器

4

我已经整天在寻找如何将应用程序中的图像上传到服务器端的方法。 我已经完成了移动应用程序方面。

public static void postImage(String ImageLink){
    RequestParams params = new RequestParams();
    params.put("uploaded_file[name]", "MyImageName");
    try {
        params.put("uploaded_file[image]", new File(ImageLink));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    AsyncHttpClient client = new AsyncHttpClient();
    client.post(MY_PHP_FILE_LINK, params, new AsyncHttpResponseHandler() {

        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
            System.out.println("statusCode "+statusCode);//statusCode 200
        }

        @Override
        public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {

        }
    });
}

以及我的PHP侧边栏代码

<?php

$file_path = "/uploads/";

$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
    echo "success";
} else{
    echo "fail";
}?>

但是即使状态码是OK,我仍然无法在服务器上找到该图片。

问题出在哪里?我的PHP代码有误吗?


请展示您的响应主体。 - eddykordo
@eddykordo,它只显示失败。 - Khalil Rumman
也许您的上传文件夹的chmod设置不正确。 - eddykordo
@eddykordo 它被设置为 775。我已经使用另一种标准的 HTTP 请求上传图片的方法,并且它可以正常工作,但我想使用 android-sync-http 库的 POST 方法,因为我在整个应用程序中都在使用它,并且非常好用。 - Khalil Rumman
@eddykordo 我已经解决了这个问题 :) - Khalil Rumman
1个回答

10

我已经解决了问题,原因在于我的RequestParams中。我曾试图更改文件名,但似乎无法实现,所以我更改了代码,现在运行良好。

public static void postImage(String ImageLink){
RequestParams params = new RequestParams();
try {
    params.put("uploaded_file", new File(ImageLink));
} catch (FileNotFoundException e) {
    e.printStackTrace();
}
AsyncHttpClient client = new AsyncHttpClient();
client.post(MY_PHP_FILE_LINK, params, new AsyncHttpResponseHandler() {

    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
        System.out.println("statusCode "+statusCode);//statusCode 200
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {

    }
});
}

谢谢!我在加载图片时遇到了问题:413请求实体过大。请再次尝试解决 :) - AlexS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接