android上传图片并附带上传数据,文件流

关于android的图片上传有两种方式,一种是以文件流的方式上传,图片转换成二进制上穿。另一种是把图片转成base64方式上传,这篇博客我只介绍文件流,关于base64方式会在下一篇博客中介绍!

首先是安卓端;图片上传我们需要一个图片的路径,同过调用本地相册或者拍照可以返回图片路径,这个在这里就不说了;假设我们获得图片路径为PicPath;

下面是安卓代码:

首先我们要封装要发送的数据 数据封装好了以后用String path=URLEncodedUtils.format(Parameters,"UTF-8");来编码; 然后是开线程发送数据

activity:

封装数据

@SuppressLint("SimpleDateFormat")public String getrubbishIfo() throws IOException {final List<NameValuePair> Parameters = new ArrayList<NameValuePair>();Parameters.add(new BasicNameValuePair("runame", thingname.getText().toString().trim()));Parameters.add(new BasicNameValuePair("ruleibie", fenlei.getSelectedItem().toString()));Parameters.add(new BasicNameValuePair("rubeizhu", beizhu.getText().toString().trim()));Parameters.add(new BasicNameValuePair("rufreetime", freetime.getSelectedItem().toString()));Parameters.add(new BasicNameValuePair("userphone", userphone));Parameters.add(new BasicNameValuePair("address", address.getText().toString().trim()));Parameters.add(new BasicNameValuePair("username", username));Parameters.add(new BasicNameValuePair("rudate", ""));System.out.println("Parameters:" + Parameters);String path=URLEncodedUtils.format(Parameters,"UTF-8");System.out.println(path+"0000000000000000000");return path;}

Handler myhandler = new Handler() {public void handleMessage(Message msg) {String text = (String) msg.obj;if (text.equals("yes")) {Log.d("click", "不为空了");Toast.makeText(getApplicationContext(), "发布成功!!!", Toast.LENGTH_SHORT).show();} else {Toast.makeText(getApplicationContext(), "发布失败!!!",Toast.LENGTH_LONG).show();}};};

//提交数据

class tijiaoListener implements OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubnew Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubUploadFile_image up=new UploadFile_image();try {Stringpath = getrubbishIfo();String restr=up.uploadFile(HttpPath.FABU_PATH+"?"+path, picpath);//HttpPath.FABU_PATH为路径,将封装好的数据path绑到路径后传递给服务器,picpath为图片路径Message message = myhandler.obtainMessage();message.obj = restr;myhandler.sendMessage(message);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}).start();

下边是工具类UploadFile_image up也就是图片格式准换的方式;

package com.back.util;import java.io.DataOutputStream;import java.io.FileInputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class UploadFile_image {private String newName ="image.jpg";/* 上传文件至Server的方法 */ public String uploadFile(String actionUrl,String picPath) { 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"这个参数来说明我们这传的是文件不是字符串了 "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);

一个真正的人对困难的回答是战斗,

android上传图片并附带上传数据,文件流

相关文章:

你感兴趣的文章:

标签云: