文档章节

android 最简单的图片上传

n
 nandecanghai123
发布于 2017/09/05 14:36
字数 531
阅读 21
收藏 0

本文中Android上传图片是通过将图片转换成Base64码,然后将Base64码作为参数进行上传的,本文对图片转换Base64码进行了封装。具体使用方法如下
1、工程中添加sun.misc.BASE64Decoder.jar文件
2、进入系统预设的选择图片

 Intent intent = new Intent();
/* 开启Pictures画面Type设定为image */
    intent.setType("image/*");
/* 使用Intent.ACTION_GET_CONTENT这个Action */
    intent.setAction(Intent.ACTION_GET_CONTENT);
/* 取得相片后返回本画面 */
    startActivityForResult(intent, 1);

3、选择回调,重写onActivityResult()方法,内容如下

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Uri uri = data.getData();
        imagePath = FileUtils.getUriPath(this, uri);
        Bitmap image=BitmapFactory.decodeFile(imagePath);
        img.setImageBitmap(image);
    }
}

4、使用Base64类中的方法进行转换并上传,上传过程调用的是本人经常使用的封装类,具体实现见上一篇博客-android的http通信

private void addGood(final String name, final String price, final String num) {
    new Thread(new Runnable() {
        @Override
        public void run() {
            NetWork netWork=new NetWork();
            Map<String,String> map=new HashMap<String,String>();
            map.put("name",name);
            map.put("price",price);
            map.put("num",num);
            map.put("type",type+"");
            map.put("img", TypeConverter.GetImageStr(imagePath));//将指定地址的图片转换成Base64码
            String result=netWork.doPostImg(map, URLValues.addGoodURL);
            if(result==null)
                result="" ;
            sendMessage(addWhat,addKey,result);
        }
    }).start();
}

TypeConverter.java

public class TypeConverter {
        //图片转化成base64字符串
        public static String GetImageStr(String path)
        {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
            String imgFile = path;//待处理的图片
            InputStream in = null;
            byte[] data = null;
            //读取图片字节数组
            try
            {
                in = new FileInputStream(imgFile);
                data = new byte[in.available()];
                in.read(data);
                in.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            //对字节数组Base64编码
            BASE64Encoder encoder = new BASE64Encoder();
            return encoder.encode(data);//返回Base64编码过的字节数组字符串
        }
        //base64字符串转化成图片
        public static boolean GenerateImage(String imgStr)
        {   //对字节数组字符串进行Base64解码并生成图片
            if (imgStr == null) //图像数据为空
                return false;
            BASE64Decoder decoder = new BASE64Decoder();
            try
            {
                //Base64解码
                byte[] b = decoder.decodeBuffer(imgStr);
                for(int i=0;i<b.length;++i)
                {
                    if(b[i]<0)
                    {//调整异常数据
                        b[i]+=256;
                    }
                }
                //生成jpeg图片
                String imgFilePath = "C:\\inetpub\\wwwroot\\school_mart";//新生成的图片
                OutputStream out = new FileOutputStream(imgFilePath);
                out.write(b);
                out.flush();
                out.close();
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
        }
}

图片接收见本人下一篇博客-java对图片接收的实现

本文转载自:http://blog.csdn.net/u010184245/article/details/52807520

n
粉丝 0
博文 47
码字总数 0
作品 0
烟台
私信 提问
Android根据图片Uri获取图片path绝对路径的几种方法【转】

在Android 编程中经常会用到Uri转化为文件路径,如我们从相册选择图片上传至服务器,一般上传前需要对图片进行压缩,这时候就要用到图片的绝对路径。 下面对我开发中uri转path路径遇到的问题...

vetter
2018/09/03
0
0
Android 上传图片到服务器 okhttp一

【目录】 (一)上传图片到服务器一 ---------------------------------Android代码 (二)上传图片到服务器二---------------------------------Android 系统7.0以上调用相机兼容问题 (三)...

小群子0618
02/28
0
0
ReactNative IOS模块

[背景] 目前已经开发好相同功能的android版本,本人不会ios开发,无从下手 [需求] 1、语音录制模块 功能需求:语音(开始、停止、试听)、压缩后上传到指定服务器 接收标准: a、IOS端原生模...

孟凯
2016/05/22
14
0
Android 上传图片到服务器二--------调用相机7.0以上权限问题

【目录】 (一)上传图片到服务器一 ---------------------------------Android代码 (二)上传图片到服务器二---------------------------------Android 系统7.0以上调用相机兼容问题 (三)...

小群子0618
02/28
0
0
迈绝伦团队工作汇总

项目负责人:余志恒 up_java后台:无 mz_java后台:修改同城下载文件名,完善论坛功能 bwk后台:无 项目负责人:季景胜 up_Android:无 upzg_Android:无 mzqk_Android:登陆界面重写,地图选...

风化的骆驼
2017/01/16
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Dubbo-自适应拓展机制

背景 在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等,这些都是Dubbo的基础组件。这些基础组件的拓展不是在系统框架启动阶段被加载,而是拓展方...

rock-man
12分钟前
3
0
Kali安装fcitx输入法(五笔)

安装fcitx > sudo apt-get install fcitx-rime fcitx-config-gtk3 重启 > sudo reboot fcitx配置 效果就是这样 配置输入法切换 系统设置...

yeahlife
14分钟前
3
0
IE之css3效果兼容

本文转载于:专业的前端网站▷IE之css3效果兼容 一、兼容css阴影效果(ie滤镜) 1.Shadow,阴影 .shadow { -moz-box-shadow: 3px 3px 4px #000; -webkit-box-shadow: 3px 3px 4px #000; box-sha...

前端老手
17分钟前
3
0
NiushopB2C开源商城功能列表说明:

B2C单商户免费版:PC商城+微商城 B2C单商户标准版:PC商城+微商城组合套餐+阶梯优惠核销功能 B2C单商户企业版:PC商城+微商城拼团+组合套餐阶梯优惠+核销功能 B2C单商户分销版:PC商城+微商城...

niushop-芳
19分钟前
3
0
图片如何转GIF图片呢

如何将生活中拍摄的好玩有趣的图片制作成GIF动图呢?相信很多小伙伴都不知道要如何制作,其实制作方法非常的简单,下面分享一个图片转GIF动图的方法,希望这个方法能够帮助大家在与好友斗图时...

白米稀饭2019
25分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部