Android拍照且将图片上传至服务器

简介: MainActivity如下: package cc.cn;import java.io.File;import java.io.IOException;import cc.

MainActivity如下:

package cc.cn;

import java.io.File;
import java.io.IOException;
import cc.cn.UploadImageThread.UploadImageListener;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;

/**
 * Demo描述:
 * 利于httpmime-4.1.3.jar实现图片的上传
 */
public class MainActivity extends Activity {
	private Button mCameraButton;
	private File imageFile;
	private Context mContext;
	private UploadImageThread mUploadImageThread;
	private final int REQUEST_CAMERA = 9527;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}

	private void init() {
		mContext=this;
		mCameraButton = (Button) findViewById(R.id.button);
		mCameraButton.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				startCamera();
			}
		});
	}

	public void startCamera() {
		String state = Environment.getExternalStorageState();
		if (state.equals(Environment.MEDIA_MOUNTED)) {
			String saveDir = Environment.getExternalStorageDirectory()+ "/test";
			File imageDir = new File(saveDir);
			if (!imageDir.exists()) {
				imageDir.mkdir();
			}
			imageFile = new File(saveDir, "floor1.jpg");
			if (!imageFile.exists()) {
				try {
					imageFile.createNewFile();
				} catch (IOException e) {
					e.printStackTrace();
					return;
				}
			}
			Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
			intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
			startActivityForResult(intent, REQUEST_CAMERA);
		}

	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		switch (requestCode) {
		case REQUEST_CAMERA:
			if (resultCode != RESULT_OK) {
				return;
			}
			if (imageFile != null && imageFile.exists()) {
				mUploadImageThread= new UploadImageThread(imageFile);
				mUploadImageThread.setUploadImageListener(new UploadImageListener(){
					@Override
					public void uploadImageFail() {
						System.out.println("----> 图片上传失败");
					}
					@Override
					public void uploadImageSuccess() {
						System.out.println("----> 图片上传成功");
					}});
				mUploadImageThread.start();
			}
			break;
		default:
			break;
		}
	}

}


UploadImageThread如下:

package cc.cn;
import java.io.File;
import java.nio.charset.Charset;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.HttpVersion;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.ContentBody;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.params.CoreProtocolPNames;

public class UploadImageThread extends Thread {
	private File mImageFile;
	private String serverURL = "Your serverURL";
    private UploadImageListener mUploadImageListener;
	public UploadImageThread(File imageFile) {
		mImageFile = imageFile;
	}
	
	public void setUploadImageListener(UploadImageListener uploadImageListener){
		mUploadImageListener=uploadImageListener;
	}
	
	public interface UploadImageListener{
		public void uploadImageFail();
		public void uploadImageSuccess();
	}

	@Override
	public void run() {
		HttpPost httppost = new HttpPost(serverURL);
		ContentBody contentBody1 = new FileBody(mImageFile, ".jpg");
		HttpClient httpclient = new DefaultHttpClient();
		httpclient.getParams().setParameter
		(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
		httpclient.getParams().setParameter
		(CoreConnectionPNames.CONNECTION_TIMEOUT, 15000);
		httpclient.getParams().setParameter
		(CoreConnectionPNames.SO_TIMEOUT,20000);
		MultipartEntity entity = new MultipartEntity
		(HttpMultipartMode.BROWSER_COMPATIBLE, null, Charset.forName("UTF-8"));

		try {
			entity.addPart("devsn", new StringBody("123456"));
			entity.addPart("status", new StringBody("123456"));
			entity.addPart("upfile1", contentBody1);
			httppost.setEntity(entity);
			HttpResponse response = httpclient.execute(httppost);
			int status = response.getStatusLine().getStatusCode();
			System.out.println("---> statusCode="+status);
			if (status == HttpStatus.SC_OK) {
				mUploadImageListener.uploadImageSuccess();
			} else {
				mUploadImageListener.uploadImageFail();
			}
		} catch (Exception e) {
			mUploadImageListener.uploadImageFail();
		} finally {
			httpclient.getConnectionManager().shutdown();
		}
	}
}

main.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff">

    <Button
        android:id="@+id/button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="拍照并且上传到服务器"
        android:layout_centerInParent="true" />

</RelativeLayout>



相关文章
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
165 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
7月前
|
JSON Android开发 数据格式
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
91 2
|
7月前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
文件上传 图片上传 客户端图片上传到服务器
文件上传 图片上传 客户端图片上传到服务器
|
4月前
|
存储 JavaScript 前端开发
Vue中实现图片上传,上传后的图片回显,存储图片到服务器 【使用对象存储OSS】
这篇文章介绍了在Vue中实现图片上传到阿里云OSS对象存储服务的完整流程,包括服务端签名直传的前提知识、后端设置、前端组件封装以及图片上传和回显的效果展示。
|
4月前
|
数据可视化 Python
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
78 0
|
6月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之保存视频图片,存到自己服务器,该如何操作
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
6月前
|
应用服务中间件 Linux 网络安全
一张图讲解单机FastDFS图片服务器安装步骤(修订版)
一张图讲解单机FastDFS图片服务器安装步骤(修订版)
|
6月前
|
前端开发 Java API
Android端通过HttpURLConnection上传文件到服务器
Android端通过HttpURLConnection上传文件到服务器
96 0
|
4天前
|
弹性计算 运维 安全
阿里云轻量应用服务器与ECS的区别及选择指南
轻量应用服务器和云服务器ECS(Elastic Compute Service)是两款颇受欢迎的产品。本文将对这两者进行详细的对比,帮助用户更好地理解它们之间的区别,并根据自身需求做出明智的选择。
下一篇
DataWorks