在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → android 拍照后将照片即时上传到公网服务器(亲测通过),实例源码下载

android 拍照后将照片即时上传到公网服务器(亲测通过),实例源码下载

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:0.06M
  • 下载次数:92
  • 浏览次数:2748
  • 发布时间:2013-02-05
  • 实例类别:Android平台开发
  • 发 布 人:星火燎原
  • 文件格式:.zip
  • 所需积分:2
 相关标签: Android 拍照 上传

实例介绍

【实例简介】android拍照后上传照片至服务器,源码中的公网地址改成自己的网站网址即可

private String actionUrl="http://192.168.0.177:8077/test/upload";
【实例截图】


【核心代码】

android客户端代码:

 

package camera.core.pps;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

//import com.android.project.PhontoActivity;
//import com.android.internal..R;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class CameraAndUploadActivity extends Activity {
	
	  /* 变量声明
	   * newName:上传后在服务器上的文件名称
	   * uploadFile:要上传的文件路径
	   * actionUrl:吱服器勺对应的程序路径 */
	  private String newName="image.jpg";
	  private String uploadFile="/data/data/irdc.ex08_11/image.jpg";
	  //private String actionUrl="http://10.10.100.33/upload/upload.jsp";
	  private String actionUrl="http://192.168.0.177:8077/test/upload";
	  
	  
	  
	  //下面是图片处理参数
		private ImageView iv_image;

		private Button bt_camera;

		private Bitmap photo;

		private File file;

		private String saveDir = Environment.getExternalStorageDirectory()
				.getPath()   "/temp_image";
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
    	iv_image = (ImageView) findViewById(R.id.iv_image);
		bt_camera = (Button) findViewById(R.id.bt_camera);

		bt_camera.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				destoryImage();
				String state = Environment.getExternalStorageState();
				if (state.equals(Environment.MEDIA_MOUNTED)) {
					file = new File(saveDir, "temp.jpg");
					file.delete();
					if (!file.exists()) {
						try {
							file.createNewFile();
						} catch (IOException e) {
							e.printStackTrace();
							Toast.makeText(CameraAndUploadActivity.this, "照片创建失败!",
									Toast.LENGTH_LONG).show();
							return;
						}
					}
					Intent intent = new Intent(
							"android.media.action.IMAGE_CAPTURE");
					intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
					startActivityForResult(intent, 1);
				} else {
					Toast.makeText(CameraAndUploadActivity.this, "sdcard无效或没有插入!",
							Toast.LENGTH_SHORT).show();
				}
			}
		});

		File savePath = new File(saveDir);
		if (!savePath.exists()) {
			savePath.mkdirs();
		}
        
    }
    
    
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if (requestCode == 1 && resultCode == RESULT_OK) {
			if (file != null && file.exists()) {
				BitmapFactory.Options option = new BitmapFactory.Options();
				option.inSampleSize = 2;
				photo = BitmapFactory.decodeFile(file.getPath(), option);
				iv_image.setImageBitmap(photo);
				
				uploadFile=file.getPath();
				uploadFile();
			}
		}
	}

	@Override
	protected void onDestroy() {
		destoryImage();
		super.onDestroy();
	}

	private void destoryImage() {
		if (photo != null) {
			photo.recycle();
			photo = null;
		}
	}
    
    
    /* 上传文件吹Server的method */
    private void uploadFile()
    {
      String end = "\r\n";
      String twoHyphens = "--";
      String boundary = "*****";
      try
      {
        URL url =new URL(actionUrl);
        HttpURLConnection con=(HttpURLConnection)url.openConnection();
        /* 允许Input、Output,不使用Cache */
        con.setDoInput(true);
        con.setDoOutput(true);
        con.setUseCaches(false);
        /* 设定传送的method=POST */
        con.setRequestMethod("POST");
        /* setRequestProperty */
        con.setRequestProperty("Connection", "Keep-Alive");
        con.setRequestProperty("Charset", "UTF-8");
        con.setRequestProperty("Content-Type",
                           "multipart/form-data;boundary=" boundary);
        /* 设定DataOutputStream */
        DataOutputStream ds = 
          new DataOutputStream(con.getOutputStream());
        ds.writeBytes(twoHyphens   boundary   end);
        ds.writeBytes("Content-Disposition: form-data; "  
                      "name=\"file1\";filename=\""  
                      newName  "\""   end);
        ds.writeBytes(end);   

        /* 取得文件的FileInputStream */
        FileInputStream fStream = new FileInputStream(uploadFile);
        /* 设定每次写入1024bytes */
        int bufferSize = 1024;
        byte[] buffer = new byte[bufferSize];

        int length = -1;
        /* 从文件读取数据到缓冲区 */
        while((length = fStream.read(buffer)) != -1)
        {
          /* 将数据写入DataOutputStream中 */
          ds.write(buffer, 0, length);
        }
        ds.writeBytes(end);
        ds.writeBytes(twoHyphens   boundary   twoHyphens   end);

        /* close streams */
        fStream.close();
        ds.flush();
        
        /* 取得Response内容 */
        InputStream is = con.getInputStream();
        int ch;
        StringBuffer b =new StringBuffer();
        while( ( ch = is.read() ) != -1 )
        {
          b.append( (char)ch );
        }
        /* 将Response显示于Dialog */
        showDialog(b.toString().trim());
        /* 关闭DataOutputStream */
        ds.close();
      }
      catch(Exception e)
      {
        showDialog("" e);
      }
    }
    
    /* 显示Dialog的method */
    private void showDialog(String mess)
    {
      new AlertDialog.Builder(CameraAndUploadActivity.this).setTitle("Message")
       .setMessage(mess)
       .setNegativeButton("确定",new DialogInterface.OnClickListener()
       {
         public void onClick(DialogInterface dialog, int which)
         {          
         }
       })
       .show();
    }
    
}

服务器端C#代码:

        [HttpPost]
        public ContentResult Upload(HttpPostedFileBase file1)
        {

            #region 上传图片
            var target = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<Kt.Framework.FileServer.IImageFile>();

            var fileKey = target.SaveImageFile(file1.InputStream, file1.FileName);
            var key = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<Kt.Framework.FileServer.IKey>();
            var fileUrl = key.GetFileUrl(fileKey);
            #endregion


            var cc = new ContentResult();
            cc.Content = fileUrl;
            return cc;
        }

 

标签: Android 拍照 上传

实例下载地址

android 拍照后将照片即时上传到公网服务器(亲测通过),实例源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 王迎宾 发表于: 2013-06-26 01:06 43
我来说两句...谢谢分享!

支持(0) 盖楼(回复)

第 2 楼 zijiedl 发表于: 2013-07-15 10:08 33
我想要这个例子,没积分

支持(0) 盖楼(回复)

第 3 楼 feiyu986 发表于: 2014-02-12 17:48 15
服务器端源码用不了

支持(0) 盖楼(回复)

第 4 楼 james007 发表于: 2015-09-23 19:06 44
好例子,下載看看

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有4条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警