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();
}
}
}
{
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();
}
}
}
相关文章推荐
- 【黑马Android】(05)短信/查询和添加/内容观察者使用/子线程网络图片查看器和Handler消息处理器/html查看器/使用HttpURLConnection采用Post方式请求数据/开源项目
- Android HttpURLConnection获取网络下载图片POST请求方式
- Android-上传图片(-)_HttpURLConnection
- Android 自己封装HttpUrlConnection上传图片和字段
- multipart方式上传图片(HttpURLConnection)
- Android HttpURLConnection(Get,Post方式)进行网络通信 获取数据和网络图片
- android httpUrlConnection 方式从网络上面下载图片
- 在android中使用HttpURLConnection进行文件上传
- Android代码(Handler的运用),HttpURLConnection的应用,将url图片地址转换成图片。
- Android端通过HttpURLConnection上传文件到服务器
- android--------HttpURLConnection的get,post和图片加载
- Android 通过post上传文件--HttpURLConnection实现
- Android使用HttpURLConnection下载图片
- Android的三种网络联接方式(URL / HttpURLConnection | HttpClient | InetAddress )
- HttpURLConnection上传图片到服务器
- Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)
- Android中HttpURLConnection使用get方式向服务器提交json字符串
- Android代码(Handler的运用),HttpURLConnection的应用,将url图片地址转换成图片。
- 【Android进阶】使用HttpURLConnection实现图片的下载与现显示
- Android网络图片处理——Picasso与HttpUrlConnection比较