如何在服务器上上传大型视频文件? 我想在服务器上获得高达50到60mb的视频文件,但我不知道它是如何可能的。我无法在服务器上上传最多15mb的视频文件。请有任何解决方案然后让我知道。
public static String postRequestvideo_test(String url,byte [] video, byte [] image,List data){
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 :(得分:2)
//旧答案,请检查以下新答案
您遇到的问题可能是尝试同时在内存中加载整个视频(或任何大型文件),因为该应用具有允许的最大有限内存 ,如果你超过它,它将导致应用程序崩溃,并给你内存不足。
您需要做的是打开一个连接并将其设置为" Keep-Alive" ,然后打开一个 FileInputStream 来阅读您的视频,并开始读取和发送为块(1-4 MB可能是一个很好的大小),直到发送所有文件字节。这样,您就可以确保在您的应用未达到允许的内存限制时,流正在发送数据。
// 新答案
请注意,以上是一个老答案,现在我只使用 MultipartEntity (org.apache.http.entity.mime.MultipartEntityBuilder)并且它自己处理任何文件大小
答案 1 :(得分:2)
mpEntity.addPart(Constant.VIDEO, new FileBody(file,
"video/mp4"));
我只是把它完成了。