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

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>



时间: 2024-10-27 19:57:14

Android拍照且将图片上传至服务器的相关文章

camera-截取的图片上传到服务器上的时候会旋转90度

问题描述 截取的图片上传到服务器上的时候会旋转90度 我做了一个安卓应用程序.在我的应用中,我要截取一个图片并把它发送到服务器上.在某种设备里,截取的图片上传到服务器上的时候会旋转90度.代码如下: Uri selectedImage = data.getData(); File imageFile = new File(selectedImage.toString()); ExifInterface exif; try { exif = new ExifInterface(imageFile.

picturebox-新手请教:怎么把pictureBox的图片上传到服务器

问题描述 新手请教:怎么把pictureBox的图片上传到服务器 6C //图片黏贴功能 IDataObject iData = Clipboard.GetDataObject(); imgzt =(Bitmap)iData.GetData(DataFormats.Bitmap); //存储数据库原始截图 if (imgzt != null) { Bitmap image = (Bitmap)iData.GetData(DataFormats.Bitmap); //缩小比例图片 image =

服务器那边没数据-iOS 图片上传,服务器那边收不到数据,显示字节数为0

问题描述 iOS 图片上传,服务器那边收不到数据,显示字节数为0 /** 上传头像 接口说明 此接接口以POST方式请求. 请求说明http://124.207.188.52/firmail/app/imgupload/upload?uid=111&file=图片二进制流 参数说明 uid 用户id file 图片的二进制流 */ (void)asiUploadIcon { NSURL *url = [NSURL URLWithString:@"http://124.207.188.52

J2ME中如何将图片上传到服务器的数据库中,用servlet来处理

问题描述 如何写一个J2ME上传图片的程序,将图片上传到服务器中的mysql数据库中,并可以从数据库中取出数据,如有源码,请共享一下好吗? 解决方案 解决方案二:急呀!望大虾们指点迷津!解决方案三:反正都是用流来弄的

在Winfrom中怎么把图片上传到服务器?

问题描述 我要做一个上传图片的功能,实现把本地的图片上传到服务器中,那位大大讲解一下,有代码最好 解决方案 解决方案二:后台可以考虑使用ftp或是http服务器来接受文件,如果采用http的话,给你一个参考server(asp.netmvc)[AcceptVerbs(HttpVerbs.Post)]publicvoidPush(stringid){stringappName=id.Split('.')[0];stringtargetFolder=Path.Combine(Server.MapPa

JQ 中从本地图片上传到服务器怎么写

问题描述 JQ中从本地图片上传到服务器怎么写 解决方案 解决方案二:用<inputtype='file'和jQ无关解决方案三:有ajax的upload插件,可以找找解决方案四: 解决方案五:直接后台file.SavaAs()解决方案六:页面上用<inputtype='file'name="imgfile"/>接受request.files来接受和jq无关解决方案七:引用5楼yyl8781697的回复: 页面上用<inputtype='file'name=&quo

android自定义ImageView仿图片上传示例

看下效果图 主要看下自定义view 代码 public class ProcessImageView extends ImageView{ private Context context; private Paint paint; private LogUtil log=LogUtil.getInstance(); int progress = 0; private boolean flag; public ProcessImageView(Context context) { super(co

Java实现图片上传到服务器,并把上传的图片读取出来

在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传的头像,那么这个是如何实现的呢?   下面说一下我的实现过程(只是个人实现思路,实际网站怎么实现的不太清楚) 实现的思路: 工具:MySQL,eclipse 首先,在MySQL中创建了两个表,一个t_user表,用来存放用户名,密码等个人信息, 一个t_touxiang表,用来存放上传的图片在服务器中的存放路径,以及图片名字和用户ID, T_touxiang表中的用户ID对应了t_user中

Asp.net 图片上传到服务器,并立即显示出来(2)

问题描述 页面不刷新直接上传到服务器,并且立即显示出来 解决方案 解决方案二:你需要第三方插件,如:uploadify解决方案三:我用百度的webuploader:解决方案四:用到了一个插件叫jquery.form<scripttype="text/javascript">window.jQuery||document.write("<scriptsrc='/assets/js/jquery.js'>"+"<"+&q