zoukankan      html  css  js  c++  java
  • StyleAI厚积薄发: Android网络图片数据传输

            在StyleAI上厚积了这么长时间,憋了这么久,本来想憋个更大的,不过还是薄发一次的好。


    三、直接使用别人的工程

    文章:Android学习之客户端上传图片到服务器

    下载地址:https://download.csdn.net/download/wlj142/7594879

    可以运行



    二、在Eclipse中使用XUtils3组件 

             文章:在Eclipse中导入XUtils3

    把 jniarmeabi下面的 libwebpbackport.so文件 复制到 个人工程 jniarmeabi下面;

    把 xutils-3.3.36.jar 文件,复制到 libs 下面;


    参考原文,按照原文指示一步一步地操作,会运行成功。

    建议使用3.3.36版本,3.5版本的JNI文件不存在,可能发生了重大变更

    GitHub:https://github.com/wyouflf/xUtils3

    下载地址:http://dl.bintray.com/wyouflf/maven/org/xutils/xutils/3.3.36/


    一、安卓C/S图片数据传输APP端-将图片传输至服务器端存储     

    1.整体思路:
    客户端:
    (1)将图片信息转化成byte数组;
    (2)将图片信息进行base64加密;
    服务端:
    (1)将加密字符串进行解密
    (2)解密之后的字符串还原成byte数组
    (3)将byte数组写入到文件中
    解密:

            byte[] imageByteArray=HmsUtil.decodeBase64(changeHeadPic.getPic());

    HmsUtil中的代码:

        public static byte[] decodeBase64(String encodeStr) {
            return Base64.decode(encodeStr);
        }

    写入到文件:

    public static Boolean saveFile(byte[] fileByteArray, String path, String fileName) {
            BufferedOutputStream out = null;
            //标记文件保存是否成功
            Boolean flag = true;
            try {
                out = new BufferedOutputStream(new FileOutputStream(path));
                out.write(fileByteArray);
                out.flush();
            } catch (Exception e) {
                flag = false;
                logger.error("保存文件失败!", e);
            } finally {
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                    }
                }
            }
            return flag;
        }


    二、使用android-async-http框架传输base64加密图片

           android上传图片到服务器(使用base64字节流的形式通过 AsyncHttpClient框架传输

    组件:http://loopj.com/Android-async-http/

    使用 http://loopj.com/android-async-http

    下载地址:http://loopj.com/android-async-http/  建议直接下载jar文件

    package com.example.irisdetectyiyi;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.util.Base64;
    
    import org.xutils.x;
    import org.xutils.http.RequestParams;
    
    import com.loopj.android.http.AsyncHttpClient;
    import com.loopj.android.http.AsyncHttpResponseHandler;
    
    public class dataG2Net {
    
    	// 传输本地图片和时间戳到网络
    	// 获取信息和时间戳到本地,同步显示
    	public dataG2Net() {
    
    	}
    
    	public static void reg(final Context cont, Bitmap photodata, String regData) {
    		try {
    			ByteArrayOutputStream baos = new ByteArrayOutputStream();
    
    			// 将bitmap一字节流输出 Bitmap.CompressFormat.PNG 压缩格式,100:压缩率,baos:字节流
    			photodata.compress(Bitmap.CompressFormat.PNG, 100, baos);
    			baos.close();
    			byte[] buffer = baos.toByteArray();
    			System.out.println("图片的大小:" + buffer.length);
    
    			// 将图片的字节流数据加密成base64字符输出
    			String photo = Base64.encodeToString(buffer, 0, buffer.length, Base64.DEFAULT);
    
    			// photo=URLEncoder.encode(photo,"UTF-8");
    			RequestParams params = new RequestParams();
    			params.put("photo", photo);
    			params.put("name", "woshishishi");// 传输的字符数据
    			String url = "http://10.0.2.2:8080/IC_Server/servlet/RegisterServlet1";
    
    			AsyncHttpClient client = new AsyncHttpClient();
    			client.post(url, params, new AsyncHttpResponseHandler() {
    
    				@Override
    				public void onSuccess(int statusCode, String content) {
    					Toast.makeText(cont, "头像上传成功!" + content, 0).show();
    				}
    
    				@Override
    				public void onFailure(Throwable e, String data) {
    					Toast.makeText(cont, "头像上传失败!", 0).show();
    				}
    			});
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		//
    	}
    
    }

  • 相关阅读:
    [MySQL] InnoDB三大特性之 插入缓冲
    字节对齐《c和指针》笔记包含位域结构体的内存对齐(32bit,GCC)
    反编译想到的代码安全问题
    剪切\编辑歌曲软件
    照片行【生活随笔】井冈山之行
    埃里克食品浅谈垃圾食品
    C++ 堆排序实现
    SQLite数据库
    全光网络的前世今生
    hdu1201(从出生长18岁经过多少天)
  • 原文地址:https://www.cnblogs.com/wishchin/p/9199841.html
Copyright © 2011-2022 走看看