您的位置:首页 > 理论基础 > 计算机网络

android httpurlconnection 方式上传图片

2013-10-29 18:25 330 查看
private void postImg( String actionUrl, Map< String, String > params, String filePath )

{

HttpURLConnection conn = null;

try

{

String BOUNDARY = "----WebKitFormBoundaryGA8Dp6oSsjLFAQIQ"; //数据分隔线

String MULTIPART_FORM_DATA = "Multipart/form-data";

URL url = new URL(actionUrl);

conn = (HttpURLConnection) url.openConnection();

conn.setDoInput(true);//允许输入

conn.setDoOutput(true);//允许输出

conn.setUseCaches(false);//不使用Cache

conn.setRequestMethod("POST");

conn.setRequestProperty("Connection", "Keep-Alive");

conn.setRequestProperty("Charset", "UTF-8");

conn.setRequestProperty("Content-Type", MULTIPART_FORM_DATA + ";boundary=" + BOUNDARY);

StringBuilder sb = new StringBuilder();

//上传的表单参数部分,格式请参考文章

/* for (Map.Entry<String, String> entry : params.entrySet()) {//构建表单字段内容

sb.append("--");

sb.append(BOUNDARY);

sb.append("\r\n");

sb.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"\r\n\r\n");

sb.append(entry.getValue());

sb.append("\r\n");

}*/

// System.out.println(sb.toString());

DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());

outStream.write(sb.toString().getBytes());//发送表单字段数据

byte[] content = readFileImage(filePath);//这函数简单,直接读取文件,不贴出来了!

//上传的文件部分,格式请参考文章

//System.out.println("content:"+content.toString());

StringBuilder split = new StringBuilder();

split.append("--");

split.append(BOUNDARY);

split.append("\r\n");

String filename = filePath.substring( filePath.lastIndexOf('/') + 1 );

split.append("Content-Disposition: form-data;name=\"upload_file\";filename=");

split.append("\"").append(filename).append("\"\r\n");

split.append("Content-Type: image/jpg\r\n\r\n");

System.out.println(split.toString());

outStream.write(split.toString().getBytes());

outStream.write(content, 0, content.length);

outStream.write("\r\n".getBytes());

byte[] end_data = ("--" + BOUNDARY + "--\r\n").getBytes();//数据结束标志

outStream.write(end_data);

outStream.flush();

int result = conn.getResponseCode();

if( result == 200 )

{

Log.i("Test", "success! ");

}else

{

Log.i("Test", "failde! ");

}

}catch( Exception ex )

{

ex.printStackTrace();

}finally

{

if( null != conn )

{

conn.disconnect();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐