2014-10-02 141 views
-1

如何在服務器上上傳大視頻文件? 我想要高達50至60mb的視頻文件在服務器上,但我不知道它是如何可能的。我無法在服務器上上傳最多15MB的視頻文件。請有任何解決方法然後讓我知道。如何在服務器上上傳大視頻文件?

公共靜態字符串postRequestvideo_test(字符串URL,字節[]視頻, 的byte []的圖像,列表數據){

String result = ""; 
    Log.i("video_upload", video + ""); 
    try { 
     HttpPost httpPost = new HttpPost(url); 
     // StringEntity se; 
     // se = new StringEntity(data, HTTP.UTF_8); 
     // httpPost.setEntity(new UrlEncodedFormEntity(data)); 
     httpPost.setEntity(new UrlEncodedFormEntity(data, "UTF-8")); 
     MultipartEntity mpEntity = new MultipartEntity(
       HttpMultipartMode.BROWSER_COMPATIBLE); 

     mpEntity.addPart("video_thumbnail", new ByteArrayBody(image, 
       "imagename" + ".jpeg")); 
     mpEntity.addPart("video", 
       new ByteArrayBody(video, "hyman" + ".mp4")); 

     mpEntity.addPart("user_key", new StringBody("user_key_test")); 
     mpEntity.addPart("video_name", new StringBody("video_name_test")); 
     mpEntity.addPart("video_duration", new StringBody(
       "video_duration_test")); 

     mpEntity.addPart("video_thumbnail_extn", new StringBody(
       "video_thumbnail_extn_test")); 
     httpPost.setEntity(mpEntity); 
     HttpParams httpParameters = new BasicHttpParams(); 
     int timeoutConnection = 90000000; 
     HttpConnectionParams.setConnectionTimeout(httpParameters, 
       timeoutConnection); 
     int timeoutSocket = 90000000; 
     HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); 

     DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters); 
     BasicHttpResponse httpResponse = (BasicHttpResponse) httpClient 
       .execute(httpPost); 
     HttpEntity entity = httpResponse.getEntity(); 
     if (entity != null) { 
      result = EntityUtils.toString(entity); 
      result = result.trim(); 
     } 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     return "-333" + e.toString(); 
    } 
    return result; 
} 
+0

請更具體一點 - 您在上傳過程中遇到了什麼問題? – Okas 2014-10-02 10:31:11

+0

我發送視頻文件爲字節數組,內存錯誤。 – 2014-10-02 10:34:25

+0

什麼是迴應,你如何接聽電話?請儘可能詳細地提供詳細信息。 – Okas 2014-10-02 10:36:33

回答

2

//老回答,請請查看以下新的答案

你遇到的問題可能是試圖一次加載整個視頻(或者任何大文件)在內存中,因爲該應用程序有一個允許的最大有限內存,如果你超過了,它會導致應用程序崩潰和g你出現內存異常。

你需要做的是開放的連接,將其設置爲「保持活躍」,然後打開一個的FileInputStream閱讀您的視頻,並開始閱讀和發送的數據塊(1-4 MB可能一個好的大小),直到所有的文件字節被髮送。這樣,您就可以確保數據流在發送數據的同時不會超出應用程序允許的內存限制。

// 新建答案

請注意,上面是一個古老的答案,現在我只用MultipartEntity(org.apache.http.entity.mime.MultipartEntityBuilder),它需要照顧任何文件大小在它自己。

+0

謝謝你的回覆。如果任何大型文件上傳,那麼每個人都可能面臨問題。但現在每天,我已經找到了一些解決方案,並且它的使用充分利用了每個人上傳大文件的工作。我們在小部件的分檔上做了這個。我有30MB的文件,我有一小塊文件塊並上傳文件。 – 2015-01-21 10:26:21

2

mpEntity.addPart(Constant.VIDEO,new FileBody(file, 「video/mp4」));

我只是把它和它完成。