2017-05-25 45 views
2

我想從我的Android應用程序使用loopj AndroidAsyncHttp庫將視頻文件上傳到我的服務器。上傳圖像會產生「成功:200」響應,而嘗試上傳視頻會給出500或302錯誤響應。這是我上傳的方法:如何確保文件上傳與視頻使用loopj AndroidAsyncHttp?

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。我不知道爲什麼上傳圖片效果不錯,但不是使用相同腳本的視頻。

回答

1

檢查php.ini文件中的值post_max_sizeupload_max_filesize。默認值只有2兆字節,所以你應該把它改成更合適的東西。

要找到您自己的主機上的php.ini的位置,只需在您的站點的任何可用腳本中插入phpinfo()的調用,然後在瀏覽器中查看輸出。

對於流行的雲平臺:

在谷歌雲引擎(標準或靈活的環境中)把php.ini文件到你的項目的根(旁邊app.yaml)裏面這幾行:

post_max_size = 128M upload_max_filesize = 128M

在Heroku將.user.ini文件與您的應用的根目錄中的上述內容相同。

+0

它在一臺服務器上工作,但不是預期的服務器。 htaccess文件能否拒絕All in it會導致它不發生? –

+0

有問題的服務器的'phpinfo()'輸出中'upload_max_filesize'的值是多少? – SergeAx

+0

最大文件上傳大小爲125M –

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);