现在的位置: 首页 > 综合 > 正文

通过java post上传file文件

2014年09月05日 ⁄ 综合 ⁄ 共 2066字 ⁄ 字号 评论关闭

公司用到了文件上传的功能。可以通过org.apache.http文件FileBody作为参数进行传输,如reqEntity.addPart("imgFile", file);HttpClient4 的使用


import java.io.File;  
import java.io.IOException;  
  
import org.apache.http.HttpEntity;  
import org.apache.http.HttpResponse;  
import org.apache.http.HttpStatus;  
import org.apache.http.client.ClientProtocolException;  
import org.apache.http.client.HttpClient;  
import org.apache.http.client.methods.HttpPost;  
import org.apache.http.entity.mime.MultipartEntity;  
import org.apache.http.entity.mime.content.FileBody;  
import org.apache.http.entity.mime.content.StringBody;  
import org.apache.http.impl.client.DefaultHttpClient;  
import org.apache.http.util.EntityUtils;  
  
public class ClientMultipartFormPost {  
  
    public static void main(String[] args) throws ClientProtocolException, IOException {  
          
      HttpClient httpclient = new DefaultHttpClient();  
			//BasicHttpParams httpParams = new BasicHttpParams();//注释的代码是其他设置和额外参数
			//HttpConnectionParams.setConnectionTimeout(httpParams, 25 * 1000);
			//HttpConnectionParams.setSoTimeout(httpParams, 25 * 1000);
			//httpclient = new DefaultHttpClient(httpParams);
			//CredentialsProvider credsProvider = new BasicCredentialsProvider();
			//UsernamePasswordCredentials creds = new UsernamePasswordCredentials("root", "system");
			//credsProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), creds);
			//((DefaultHttpClient) httpclient).setCredentialsProvider(credsProvider);
          
      try {  //上传文件路径
            HttpPost httppost = new HttpPost("http://write.blog.csdn.net/postedit");  

          
            FileBody bin = new FileBody(new File("文件路径"));  
              
            StringBody comment = new StringBody("参数1");  
          
            MultipartEntity reqEntity = new MultipartEntity();  //建立多文件实体
             
            reqEntity.addPart("upload", bin);//upload为请求后台的File upload;属性  
              
            reqEntity.addPart("str", comment);//str 为请求后台的String str;属性  
          
            httppost.setEntity(reqEntity);  //设置实体
          
            HttpResponse response = httpclient.execute(httppost);  
              
            int statusCode = response.getStatusLine().getStatusCode();  
              
            if(statusCode == HttpStatus.SC_OK){  
                  
                HttpEntity resEntity = response.getEntity();  
                  
                System.out.println(EntityUtils.toString(resEntity));//httpclient自带的工具类读取返回数据  
              
                EntityUtils.consume(resEntity);  
  
            }  
              
        } finally {  
            try {   
                httpclient.getConnectionManager().shutdown();   
            } catch (Exception ignore) {  
                  
            }  
        }  
    }  
}  

抱歉!评论已关闭.