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; } }
相关文章推荐
- Android开发 httpClient post方法请求tomcat服务器实现注册登陆
- 服务器基于PHP CodeIgniter,Android基于Volley实现多文件/图片上传(含服务器,web版和android客户端完整代码)
- Golang+Android基于HttpURLConnection实现的文件上传功能示例
- 基于标准的http来实现Android多文件上传
- Android程序开发通过HttpURLConnection上传文件到服务器
- Android开发 httpClient post方法请求tomcat服务器实现注册登陆
- Android程序开发通过HttpURLConnection上传文件到服务器
- Android开发 httpclient Post方法实现从tomcat服务器(JSP)获取listview信息
- 基于标准http实现Android多文件上传
- Android开发之httpclient文件上传实现
- android开发之HttpUrlConnection与OkHttp实现文件上传下载
- PHP服务器文件管理器开发小结(十):使用jQuery和iframe实现AJAX文件上传
- Android 使用开源框架AsyncHttpClient上传文件到服务器
- [android]模拟Http表单,实现本地文件(图片等)上传到服务器端
- Android开发入门之网络通信(通过HTTP协议实现文件上传)
- Android http文件上传-本地+服务器一条龙分析
- 架设用Webservice实现文件上传功能CentOS服务器(一)--Tomcat
- 利用HTTP协议实现Android文件上传至WEB服务器,采用PHP接收文件(参考网上自己实现)
- android原生POST、httpClient4.X实现向PHP服务器上传文件
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传