Android将图上以base64编码的格式上传到node.js服务器并保存

来源:互联网 发布:原始传奇光翼进阶数据 编辑:程序博客网 时间:2024/05/22 14:01

首先Android开发需要两个权限

  <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
其次,先看服务器是怎么写的
var http = require("http");var fs = require("fs");var queryString = require('querystring');var url = require('url');var util = require('util');http.createServer(function (request, response) {    // 定义了一个post变量,用于暂存请求体的信息    var post = '';    request.on('data', function (chunk) {        post += chunk;    });// 在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。    request.on('end', function () {        post = queryString.parse(post);        var base64Data = post.body;        var dataBuffer = new Buffer(base64Data, 'base64');        fs.writeFile("D:/"+post.name, dataBuffer, function (err) {            if (err) {                console.log(err);            } else {                console.log("保存成功!");            }        });        console.log("请求结束" + post.body);        response.writeHead(200, {"Content-Type": "text/plain;charset=utf8"});        response.write("请求成功");        response.end();    });}).listen(8888);console.log("服务器启动");

然后新建了一个图片转编码的类

package com.example.a5.myapplication;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import sun.misc.BASE64Encoder;  public class Imgtest {    public  String GetImageStr(String path)    {        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();          }        BASE64Encoder encoder = new BASE64Encoder();          return encoder.encode(data);    }}
其中需要引用这个包BASE64.jar

然后是Android的主要代码,在上一篇的基础上写的


package com.example.a5.myapplication;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.ProtocolException;import java.net.URL;import java.net.URLEncoder;public class MainActivity extends AppCompatActivity {private TextView textView;    private  String img;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView= (TextView) findViewById(R.id.textview);        Button button= (Button) findViewById(R.id.button);        String mipath= Environment.getExternalStorageDirectory().getAbsolutePath().toString()+ File.separator+"123.jpg";        img=new Imgtest().GetImageStr(mipath);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                textView.setText("开始请求");                new Thread(new Runnable() {                    @Override                    public void run() {                        HttpURLConnection connection = null;                        URL url = null;                        try {                            url = new URL("http://192.168.50.214:8888");                            connection = (HttpURLConnection) url.openConnection();                            connection.setRequestMethod("POST");                            connection.setConnectTimeout(8000);                            connection.setReadTimeout(8000);                            connection.setRequestProperty("Content-Type","application/json");                            OutputStream outputStream=connection.getOutputStream();                            BufferedWriter requestBody=new BufferedWriter(new OutputStreamWriter(outputStream));                            String str = URLEncoder.encode(img, "UTF-8");                            requestBody.write("name=123.jpg&body="+str);                            requestBody.flush();                            requestBody.close();                            getResponseJava(connection);                        } catch (UnsupportedEncodingException e) {                            e.printStackTrace();                        } catch (ProtocolException e) {                            e.printStackTrace();                        } catch (MalformedURLException e) {                            e.printStackTrace();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }).start();            }        });    }    private void getResponseJava(HttpURLConnection urlConnection) {        InputStream in = null;        try {            in = urlConnection.getInputStream();//响应        } catch (IOException e) {            urlConnection.disconnect();            //textView.setText(e.getMessage());            return;        }        BufferedReader reader = null;        try {            reader = new BufferedReader(new InputStreamReader(in,"UTF-8"));        } catch (UnsupportedEncodingException e1) {            e1.printStackTrace();        }        final StringBuilder result = new StringBuilder();        String tmp = null;        try {            while((tmp = reader.readLine()) != null){                result.append(tmp);            }        } catch (IOException e) {            //textView.setText(e.getMessage());            return;        } finally {            try {                reader.close();                urlConnection.disconnect();            } catch (IOException e) {            }        }        runOnUiThread(new Runnable() {            @Override            public void run() {                textView.setText(result);            }        });    }}

服务器给出的图是


阅读全文
0 0
原创粉丝点击