1. 文件上传的两种方式
(1) HttpClient
(2)AsyncHttpClient (开源框架: https://github.com/loopj/android-async-http)
示例代码(2)最简单
public void upload(View v){
String path = et_path.getText().toString().trim();
File file = new File(path);
String uri = "http://192.168.1.100:8080/TestLogin/servlet/UploadFile";
if(file.exists() && file.length()>0){
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
try {
params.put("profile_picture", file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
client.post(uri, params, new AsyncHttpResponseHandler(){ @Override
public void onFailure(Throwable error, String content) {
Toast.makeText(MainActivity.this, "上传失败", Toast.LENGTH_SHORT).show();
} @Override
public void onSuccess(String content) {
Toast.makeText(MainActivity.this, "上传成功", Toast.LENGTH_SHORT).show();
} });
}else{
Toast.makeText(this, "文件不存在", Toast.LENGTH_SHORT).show();
}
}
示例代码(1)
public void upload(View viwe){
HttpClient client = new HttpClient();
PostMethod filePost = new PostMethod("http://192.168.1.100:8080/web/UploadServlet");;
try {
String path = et_path.getText().toString().trim();
File file = new File(path);
if(file.exists()&&file.length()>0){
Part[] parts = {new StringPart("nameaaaa", "valueaaa"),
new StringPart("namebbb", "valuebbb"),
new FilePart("pic", new File(file.getAbsolutePath()))};
filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
client.getHttpConnectionManager().getParams()
.setConnectionTimeout(5000);
int status = client.executeMethod(filePost);
if(status ==200){
Toast.makeText(this, "上传成功", 1).show();
}else{
Toast.makeText(this, "上传失败", 1).show();
} }
else{
Toast.makeText(this, "上传的文件不存在", 0).show();
}
} catch (Exception e) {
e.printStackTrace();
filePost.releaseConnection();
} }