android httpurlconnection 方式上传图片

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();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值