Android中头像上传的另类方法——字符串上传

来源:互联网 发布:微交易系统源码破解版 编辑:程序博客网 时间:2024/05/21 20:28

1、头像上传

        头像上传功能,一般我们会使用文件的输入输出流上传。但是在Android开发中,如果我们的某一个应用,不会经常使用到文件上传这样的功能,写很多与文件上传和下载有关的代码,似乎有些不太划算,那么,我们可不可以将文件转换为字符串,然后再进行上传呢?答案是可以的,笔者将这种方法使用在了本人的项目中,非常成功,减轻了大量的代码工作量,简化了逻辑。


2、背景说明

       在开始提出这个需求的时候,笔者本身也是想着使用文件的上传功能,不过在项目中使用了Volley这个框架,它本身并不支持文件的上传,这就很坑爹了。Volley官方的文档中说,不推荐使用volley上传较大的数据。那么,笔者就在想,一个头像应该算不上什么大的文件了吧?于是,这样的一个想法就出来了:将文件转换为字符串,然后作为参数进行上传。


3、保存图片

       这里有一个保存图片的方法,如下:

    /**     * 保存图片     * @param bitmap     * @throws IOException     */    public static void saveBitmap(Bitmap bitmap) throws IOException{        mImageFile = new File(Environment.getExternalStorageDirectory() + "/temp.png");        FileOutputStream out;        try{            out = new FileOutputStream(mImageFile);            if(bitmap.compress(Bitmap.CompressFormat.PNG, 70, out)){                out.flush();                out.close();            }        } catch (FileNotFoundException e){            e.printStackTrace();        } catch (IOException e){            e.printStackTrace();        }    }


4、转换图片

        我们的目的是将图片转换为字符串,代码如下:

    /**     * 图片文件转换为指定编码的字符串     *     * @param imgFile  图片文件     */    public static String file2String(File imgFile) {        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();        String result = encoder.encode(data);        return result;//返回Base64编码过的字节数组字符串    }

5、头像上传

       这里就不提供详细的代码了,上面的代码已经是从笔者真实的项目中抽出的。这里仅仅提供一个思路吧,可以将上面的字符串,当作参数与其它字符串拼接在一起,作为参数传递给服务器,然后又服务器解析,再进行转换就可以得到真实的图片数据,转换为图片数据。


0 0
原创粉丝点击