根据这个答案,"Android upload video to remote server using HTTP multipart form data",我做了所有步骤。
但是我不知道我是如何为服务器端编码的!我的意思是一个PHP简单的页面,为我最忠实的敌人上传服务。
另一个问题是: YOUR_URL (以下代码段的第3行)必须是该PHP页面的地址?
private void uploadVideo(String videoPath) throws ParseException, IOException {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(YOUR_URL);
FileBody filebodyVideo = new FileBody(new File(videoPath));
StringBody title = new StringBody("Filename: " + videoPath);
StringBody description = new StringBody("This is a description of the video");
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("videoFile", filebodyVideo);
reqEntity.addPart("title", title);
reqEntity.addPart("description", description);
httppost.setEntity(reqEntity);
// DEBUG
System.out.println( "executing request " + httppost.getRequestLine( ) );
HttpResponse response = httpclient.execute( httppost );
HttpEntity resEntity = response.getEntity( );
// DEBUG
System.out.println( response.getStatusLine( ) );
if (resEntity != null) {
System.out.println( EntityUtils.toString( resEntity ) );
} // end if
if (resEntity != null) {
resEntity.consumeContent( );
} // end if
httpclient.getConnectionManager( ).shutdown( );
}发布于 2014-05-06 21:47:02
这段代码正常工作,我应该使用的PHP代码非常简单:
<?php
$file_path = "uploads/";
$file_path = $file_path . basename( $_FILES['videoFile']['name']);
if(move_uploaded_file($_FILES['videoFile']['tmp_name'], $file_path)) {
echo "success";
} else{
echo "upload_fail_php_file";
}
?>注意到,videoFile必须与
reqEntity.addPart("videoFile", filebodyVideo);
而最重要的问题可能是服务器配置中post_max_size和upload_max_filesize的默认值!由于缺省值太小,并且当您试图上传大型文件时,PHP脚本将返回:"upload_fail_php_file“,没有错误或异常抛出。所以记住把这些值设置得足够大..。
享受编码吧。
https://stackoverflow.com/questions/23504191
复制相似问题