0
我试图使用HttpClient发布媒体文件到服务器。我的代码适用于图像文件,但无法重播视频文件(mp4)。我张贴的文件代码:使用HttpClient发布Base64编码的视频文件
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost httppost = new HttpPost(REMOTE + "/add_file.php");
MultipartEntityBuilder mpEntity = MultipartEntityBuilder.create();
ContentBody cbFile = null;
String mimeType = "";
if (file.getName().endsWith(".jpg") || file.getName().endsWith(".jpeg")) {
mimeType = "image/jpeg";
} else if (file.getName().endsWith(".mp4")) {
mimeType = "video/mp4";
}
mpEntity.addTextBody("recipient_phone", recipientPhoneStr);
mpEntity.addTextBody("sender_phone", "55000");
mpEntity.addTextBody("sender_key", "my_secret");
mpEntity.addTextBody("file_name", file.getName());
mpEntity.addTextBody("userfile", encodeFileToBase64Binary(file));
httppost.setEntity(mpEntity.build());
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
if (response.getStatusLine().toString().compareTo(HTTP_ERROR) == 0) {
throw new IOException(HTTP_ERROR);
}
if (resEntity != null) {
System.out.println(EntityUtils.toString(resEntity));
}
if (resEntity != null) {
resEntity.consumeContent();
}
httpclient.getConnectionManager().shutdown();
的文件是使用Base64.encodeBase64String(字节)base64编码;
你是否检查过你收到所有字节?你可能会碰到php的post_max_size或apache/nginx限制。 – bart 2014-11-04 21:20:30
谢谢你。是的,post_max_size是足够的...我如何检查Apache的限制? – JB2 2014-11-04 23:01:11
将文件映射到字节并将缓冲区包装在POST的'byteArrayEntity'中。 – 2014-11-05 00:56:56