package com.example.httpupload;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.http.Header;
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.fluent.Response;
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 android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/************************这个版本不是用了许多旧版的HTTPcomponent的类******************/
/*******简单的上传文件功能,服务器为struts框架********************/
public class MainActivity extends Activity {
private Button upload_bn;
private UploadThread thread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
upload_bn=(Button)findViewById(R.id.upload);
upload_bn.setOnClickListener(new UploadListener());
}
public class UploadListener implements OnClickListener{
@Override
public void onClick(View v) {
thread=new UploadThread();
thread.start();
System.out.println("线程运行");
}
}
public class UploadThread extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
String url="http://192.168.0.103:8080/uploadtest/MyUpload";
String uploadFileAddress="/sdcard/gps_stats.txt";
File file=new File(uploadFileAddress);//文件地址
System.out.println(file.getName());
// CloseableHttpClient httpclient=HttpClients.createDefault();
HttpClient client=new DefaultHttpClient();
try {
FileBody filebody=new FileBody(file);
//StringBody comment = new StringBody("A binary file of some kind");
HttpPost filepost=new HttpPost(url);
// HttpEntity rqentity = MultipartEntityBuilder.create()
// .addPart("doc", filebody) //名字必须和服务端的file名一致
// .addPart("comment", comment)
// .build();
MultipartEntity rqentity=new MultipartEntity();
rqentity.addPart("doc", filebody);
//rqentity.addPart("comment", comment);
filepost.setEntity(rqentity);
HttpResponse response=client.execute(filepost);
HttpEntity rsentity=response.getEntity();
if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK)
{
System.out.println("上传成功");
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
client.getConnectionManager().shutdown();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
服务器:
package uploadtest;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class MyUpload extends ActionSupport {
/*每个变量都要生成getter和setter*,自动调用*/
private File doc;//文件
private String docContentType;
private String path;//路径,再struts.xml中设置
private String docFileName;//文件名
public void setPath(String path){
this.path=path;
}
public String getPath() throws Exception{
return ServletActionContext.getRequest().getRealPath(path);//取得默认的系统路径再加上path,若无这个,可在path中设置路径为D:
}
public String getDocFileName() {
return docFileName;
}
public void setDocFileName(String docFileName) {
this.docFileName = docFileName;
}
public File getDoc() {
return doc;
}
public void setDoc(File doc) {
this.doc = doc;
}
public String getDocContentType() {
return docContentType;
}
public void setDocContentType(String docContentType) {
this.docContentType = docContentType;
}
private String getFileName(String fileName){
int position=fileName.lastIndexOf(".");
String extension=fileName.substring(position);
return System.currentTimeMillis()+extension;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println(docFileName);
docFileName=getFileName(docFileName);
System.out.println("conttydf是"+getDocContentType());
FileOutputStream fos=new FileOutputStream(getPath()+"\\"+docFileName);
FileInputStream fis=new FileInputStream(doc);
byte[] b=new byte[1024];
int length=0;
while((length=fis.read(b))>0){
fos.write(b, 0, length);
}
fos.close();
fis.close();
return SUCCESS;
}
}