Android打开系统相册返回一张图片,如何将返回的图片上传到Tomcat服务器中?

Android打开系统相册返回一张图片,如何将返回的图片上传到Tomcat服务器中?,第1张

文件上传需要用到HttpClient,打开系统相册需要通过内容提供者调用android相册或者文件管理器(源代码查看附件)关于HttpClient的文件上传HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。

一、HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。

二、特性

1 基于标准、纯净的java语言。实现了Http10和Http11

2 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。

3 支持HTTPS协议。

4 通过Http代理建立透明的连接。

5 利用CONNECT方法通过Http代理建立隧道的https连接。

6 Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认证方案。

7 插件式的自定义认证方案。

8 便携可靠的套接字工厂使它更容易的使用第三方解决方案。

9 连接管理器支持多线程应用。支持设置最大连接数,同时支持设置每个主机的最大连接数,发现并关闭过期的连接。

10 自动处理Set-Cookie中的Cookie。

11 插件式的自定义Cookie策略。

12 Request的输出流可以避免流中内容直接缓冲到socket服务器

13 Response的输入流可以有效的从socket服务器直接读取相应内容。

14 在http10和http11中利用KeepAlive保持持久连接。

15 直接获取服务器发送的response code和 headers。

16 设置连接超时的能力。

17 实验性的支持http11 response caching。

18 源代码基于Apache License 可免费获取。

三、使用方法

使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。

1 创建HttpClient对象。

2 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。

3 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。

4 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。

5 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。

6 释放连接。无论执行方法是否成功,都必须释放连接

  利用ftp定时上传log到其他服务器的方法

  利用ftp定时上传log到其他服务器 #!/bin/bash #时间的生成 Y=` date --date="-1 hour" +%Y` m=` date --date="-1 hour" +%m` d=`date --date="-1 hour" +%d` H=`date --date="-1 hour" +%H`

  IPhone上传到服务器

  求助:IPhone上传到服务器 我在网上看到 IPhone上传到服务器用的是PHP的web接收,地址: 我只会aspnet ,请问用ASPnet和IPhone怎么结合实现手机端的上传到服务器上 求助!!! 重点在:if (move_uploaded_file($_FILES['u

  android开发以上传到七牛云存储服务器

  android开发之上传到七牛云存储服务器 相信很多开发者会把存放到七牛上,我的web站点也是吧存储到七牛上,对于以为主的站点,这样可以节省很大带宽。 将上传到七牛服务器的重点就是获得上传凭证uploadToken,直接把AccessKey和Secret放到客户端太不安全,容易被反编译。所以需要在服务器端根据AccessKey和Secret动态生成一个uploadToken,

服务器端写个servlet,然后在doPost()方法里处理客户端上传的文件,大概代码:

DiskFileItemFactory factory = new DiskFileItemFactory();

factorysetSizeThreshold(1024 1024); // 设置最多只允许在内存中存储的数据, 单位:字节

factorysetRepository(cachepath); // 设置一旦文件大小超过设定值时数据存放的目录

ServletFileUpload srvFileUpload = new ServletFileUpload(factory);

srvFileUploadsetSizeMax(1024 1024 1024); // 设置允许用户上传文件大小, 单位:字节

// 开始读取上传信息

List fileItems = null;

try {

fileItems = srvFileUploadparseRequest(request);

} catch (Exception e) {

Systemoutprintln("获取上传信息。。。。。。失败");

}

// 依次处理每个上传的文件

Iterator iter = fileItemsiterator();

while (iterhasNext()) {

FileItem item = (FileItem) iternext(); // 忽略其他不是文件域的所有表单信息

if (!itemisFormField()) {

// 取出文件域的所有表单信息

} else {

// 取出不是文件域的所有表单信息

}

}

http://1921681212:8011/pd/upload/fileUploaddo;

这个是服务器地址,你要上传的地方。。

理论上是需要一个服务器接收你上传的的!

他这个demo中的url是本地的,目测是写demo的人自己写的用来测试的地址

  在配备Android系统的手机中,一般都配备了GPS设备。Android为我们获取GPS数据提供了很好的接口。本文来说一下如何使用Android获取GPS的经纬度。

  1 从Service继承一个类。

  2 创建startService()方法。

  3 创建endService()方法 重载onCreate方法和onDestroy方法,并在这两个方法里面来调用startService以及endService。

  4 在startService中,通过getSystemService方法获取ContextLOCATION_SERVICE。

  5 基于LocationListener实现一个新类。默认将重载四个方法onLocationChanged、onProviderDisabled、onProviderEnabled、onStatusChanged。对于onLocationChanged方法是我们更新最新的GPS数据的方法。一般我们的操作都只需要在这里进行处理。

  6 调用LocationManager的requestLocationUpdates方法,来定期触发获取GPS数据即可。在onLocationChanged函数里面可以实现我们对得到的经纬度的最终操作。

  7 最后在我们的Activity里面通过按钮来启动Service,停止Service。

  示意代码如下:

  package comoffbyegpsservice;

  import androidappService;

  import androidcontentContext;

  import androidcontentIntent;

  import androidlocationLocationListener;

  import androidlocationLocationManager;

  import androidosBinder;

  import androidosIBinder;

  import androidutilLog;

  public class GPSService extends Service {

  // 2000ms

  private static final long minTime = 2000;

  // 最小变更距离10m

  private static final float minDistance = 10;

  String tag = thistoString();

  private LocationManager locationManager;

  private LocationListener locationListener;

  private final IBinder mBinder = new GPSServiceBinder();

  public void startService() {

  locationManager = (LocationManager) getSystemService(ContextLOCATION_SERVICE);

  locationListener = new GPSServiceListener();

  locationManagerrequestLocationUpdates(LocationManagerGPS_PROVIDER, minTime, minDistance,

  locationListener);

  }

  public void endService() {

  if (locationManager != null && locationListener != null) {

  locationManagerremoveUpdates(locationListener);

  }

  }

  @Override

  public IBinder onBind(Intent arg0) {

  // TODO Auto-generated method stub

  return mBinder;

  }

  @Override

  public void onCreate() {

  //

  startService();

  Logv(tag, "GPSService Started");

  }

  @Override

  public void onDestroy() {

  endService();

  Logv(tag, "GPSService Ended");

  }

  public class GPSServiceBinder extends Binder {

  GPSService getService() {

  return GPSServicethis;

  }

  }

  }

  GPSServiceListener的实现

  package comoffbyegpsservice;

  import javatextDateFormat;

  import javatextSimpleDateFormat;

  import javautilCalendar;

  import javautilGregorianCalendar;

  import javautilTimeZone;

  import androidlocationLocation;

  import androidlocationLocationListener;

  import androidlocationLocationProvider;

  import androidosBundle;

  import androidutilLog;

  import androidwidgetToast;

  public class GPSServiceListener implements LocationListener {

  private static final String tag = "GPSServiceListener";

  private static final float minAccuracyMeters = 35;

  private static final String hostUrl = "http://doandroidinfo/gpsservice/positionphp";

  private static final String user = "huzhangyou";

  private static final String pass = "123456";

  private static final int duration = 10;

  private final DateFormat timestampFormat = new SimpleDateFormat("yyyyMMddHHmmss");

  public int GPSCurrentStatus;

  @Override

  public void onLocationChanged(Location location) {

  // TODO Auto-generated method stub

  if (location != null) {

  if (locationhasAccuracy() && locationgetAccuracy() <= minAccuracyMeters) {

  // 获取时间参数,将时间一并Post到服务器端

  GregorianCalendar greg = new GregorianCalendar();

  TimeZone tz = greggetTimeZone();

  int ffset = tzgetOffset(SystemcurrentTimeMillis());

  gregadd(CalendarSECOND, (offset / 1000) -1);

  StringBuffer strBuffer = new StringBuffer();

  strBufferappend(hostUrl);

  strBufferappend("user=");

  strBufferappend(user);

  strBufferappend("&pass=");

  strBufferappend(pass);

  strBufferappend("&Latitude=");

  strBufferappend(locationgetLatitude());

  strBufferappend("&Longitude=");

  strBufferappend(locationgetLongitude());

  strBufferappend("&Time=");

  strBufferappend(timestampFormatformat(greggetTime()));

  strBufferappend("&Speed=");

  strBufferappend(locationhasSpeed());

  doGet(strBuffertoString());

  Logv(tag, strBuffertoString());

  }

  }

  }

  // 将数据通过get的方式发送到服务器,服务器可以根据这个数据进行跟踪用户的行走状态

  private void doGet(String string) {

  // TODO Auto-generated method stub

  //

  }

  @Override

  public void onProviderDisabled(String provider) {

  // TODO Auto-generated method stub

  }

  @Override

  public void onProviderEnabled(String provider) {

  // TODO Auto-generated method stub

  }

  @Override

  public void onStatusChanged(String provider, int status, Bundle extras) {

  // TODO Auto-generated method stub

  GPSCurrentStatus = status;

  }

  }

  摘自 offbye的技术博客

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Android打开系统相册返回一张图片,如何将返回的图片上传到Tomcat服务器中?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情