2011-07-18 85 views
4

我需要从Android客户端上传文件到URL通过HTTP POST。 如果只上传1个文件,那对我来说可以。但我的目标URL页面代码看起来像下面Android上传多文件到服务器通过http post

<form action="file_upload.php" enctype ="multipart/form-data" method="post"> 
<input type="file" name="uploadedfile"> 
<input type="file" name="uploadedfile2"> 
<input type="submit"> 
</form> 

如何通过HTTP POST上传2个文件在同一时间?

+0

谢谢Tibbits〜 – RRTW

回答

3

我尝试下面的代码,并确认这是可行的解决办法:

StringBuffer responseBody=new StringBuffer(); 

Log.i(Constants.TAG, "Ready to upload file..."); 
HttpClient client=new DefaultHttpClient(); 
client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); 

Log.i(Constants.TAG, "Set remote URL..."); 
HttpPost post=new HttpPost("http://IP.IP.IP.IP/file_upload.php"); 
MultipartEntity entity=new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 

Log.i(Constants.TAG, "Adding file(s)..."); 
entity.addPart("uploadedfile", new FileBody((FileObj), "application/zip")); 
entity.addPart("uploadedfile2", new FileBody((FileObj), "application/zip")); 

Log.i(Constants.TAG, "Set entity..."); 
post.setEntity(entity); 

BufferedReader bs=null; 
try 
{ 
    Log.i(Constants.TAG, "Upload..."); 
    HttpEntity hEntity=client.execute(post).getEntity(); 
    bs=new BufferedReader(new InputStreamReader(hEntity.getContent())); 
    Log.i(Constants.TAG, "Response length - "+hEntity.getContentLength()); 
    String s=""; 
    while(s!=null) 
    { 
    responseBody.append(s); 
    s=bs.readLine(); 
    Log.i(Constants.TAG, "Response body - "+s); 
    } 
    bs.close(); 
} 
catch(IOException ioe) 
{ 
    Log.i(Constants.TAG, "Error on getting response from Server, "+ioe.toString()); 
    ioe.printStackTrace(); 
    responseBody.append("..."); 
} 

我的平台是Android 2.2系统,并使用该解决方案需要得到httpmime.jar的项目库。

+0

如果您需要在请求中添加任何参数,请添加MultiPartEntity对象,如
multiPartEntity.addPart(“testpara”,new StringBody(“value”));
AnkitRox

相关问题