2014-10-02 98 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”));

我只是把它和它完成。