您的位置:首页 > 理论基础 > 计算机网络

Android开发 基于HttpComponent4.3.3实现文件上传至tomcat服务器(基于struts框架)

2014-05-23 23:09 846 查看
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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐