文件类型使用FileBody,字符串类型使用StringBody,其它的还有ByteArrayBody,InputStreamBody.
package com.gary.test.upload;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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;
/**
* Client
* @author gary
*
*/
public class Client {
public static void main(String[] args) throws Exception {
String url = "http://localhost:8080/ssh/manage/Disk_add.action";
String filePath = "test.mp3";
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
MultipartEntity reqEntity = new MultipartEntity();
httpPost.setEntity(reqEntity);
/** file param name */
FileBody bin = new FileBody(new File(filePath));
reqEntity.addPart("Filedata", bin);
/** String param name */
StringBody userId = new StringBody("1");
reqEntity.addPart("userId", userId);
System.out.println("executing: " + httpPost.getRequestLine());
HttpResponse response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (responseEntity != null){
System.out.println("Response content: "
+ inputStream2String(responseEntity.getContent()));
}
httpClient.getConnectionManager().shutdown();
}
public static String inputStream2String(InputStream is) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i = -1;
while ((i = is.read()) != -1) {
baos.write(i);
}
return baos.toString();
}
}
Client运行结果
executing: POST http://localhost:8080/ssh/manage/Disk_add.action HTTP/1.1
----------------------------------------
HTTP/1.1 200 OK
Response content: 上传成功
Server运行结果
2011-01-31 21:59:33 DEBUG [ssh.action.DiskAction.add(DiskAction.java:98)] - 成功
上传文件test.mp3到D:\AEclipse2\workspace\myeclipse\ssh\WebRoot\upload\netdisk129
64823729805uYix