如何使用loopj AndroidAsyncHttp确保文件上传与视频一起使用?

时间:2017-05-25 07:11:06

标签: php android video android-async-http loopj

我正在尝试使用loopj AndroidAsyncHttp库从我的Android应用上传视频文件到我的服务器。上传图片会给出成功:200"响应,而尝试上传视频会给出500或302错误响应。这是我的上传方法:

    private void uploadVideoTwo(String filePath){

        AsyncHttpClient client = new AsyncHttpClient();

        File myFile = new File(filePath);
        RequestParams params = new RequestParams();
        try {
            params.put("file", myFile);
        } catch (FileNotFoundException e) {
            Log.e(TAG, "Params Exception: " + e.getMessage());
        }

        client.post(url, params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                Log.d(TAG, "Success: " + String.valueOf(statusCode));
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                Log.d(TAG, "Failure: " + String.valueOf(statusCode));
            }
        });


    }

我的PHP代码如下所示:

    <?php 

$result = array("success" => $_FILES["file"]["name"]);

$name= $_FILES['file']['name'];

$tmp_name= $_FILES['file']['tmp_name'];

$path= "uploads/";

if (isset($name)) {

    if (empty($name))
    {
        $result = array("success" => "error uploading file");
    }
    else
    {
        if (move_uploaded_file($tmp_name, $path . $name)) {
            $result = array("success" => "File successfully uploaded");
        }
    }
}
echo json_encode($result);
?>

Android Studio logcat显示上传视频文件时的进度百分比,但在达到100%后会出现错误响应。我正打算使用打开相机捕获视频,限制为30秒,大小限制为5 MB。我不知道为什么上传图片的工作正常但不是使用相同脚本的视频。

2 个答案:

答案 0 :(得分:2)

它看起来像是超时或文件大小问题。 php脚本的默认执行时间是30秒。在php.ini文件中将其更改为300(5分钟)。

; Maximum execution time of each script, in seconds
max_execution_time=300

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize=32M

此外,通过将以下内容放在php脚本的最开头来启用错误报告。它将为您提供更详细的错误描述。

error_reporting(E_ALL);
ini_set('display_errors', 1);

答案 1 :(得分:1)

检查post_max_size文件中upload_max_filesizephp.ini的值。默认值仅为2兆字节,因此您应将其更改为更合适的值。

要在您自己的主机上找到php.ini的位置,只需在您网站上的任何可用脚本中插入phpinfo()的来电,然后在浏览器中查看输出。

对于热门云平台:

在Google Cloud Engine(标准或灵活环境)上,将php.ini文件放入项目的根目录(与app.yaml一起),其中包含以下内容:

post_max_size = 128M upload_max_filesize = 128M

在Heroku上将.user.ini文件与应用程序根目录中的内容相同。