Android上传图片的问题老是报错,求大神们赐教。

public class UploadUtil {

private static final String TAG = "uploadFile";    
private static final int TIME_OUT = 10 * 1000; // 超时时间  
private static final String CHARSET = "utf-8"; // 设置编码 
  public  static int uploadFile(File file, String RequestURL,Context context) { 
  int res=0;         String result = null;         
  String BOUNDARY = UUID.randomUUID().toString(); 
  // 边界标识 随机生成         
  String PREFIX = "--", LINE_END = "\r\n";        
  String CONTENT_TYPE = "multipart/form-data"; // 内容类型 
  try {         
  URL url = new URL(RequestURL);           
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();            
  conn.setReadTimeout(TIME_OUT);            
  conn.setConnectTimeout(TIME_OUT);         
  conn.setDoInput(true); // 允许输入流            
  conn.setDoOutput(true); // 允许输出流         
  conn.setUseCaches(false); // 不允许使用缓存             
  conn.setRequestMethod("POST"); // 请求方式             
  conn.setRequestProperty("Charset", CHARSET); // 设置编码             
  conn.setRequestProperty("connection", "keep-alive");            
  conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary="+ BOUNDARY);
  Toast.makeText(context, "--------------------"+file.getPath(), 3).show();  
  if (file !=null) {                 /**                  * 当文件不为空时执行上传                  */  
  Toast.makeText(context, "--name----"+file.getName(), 3).show();  
  DataOutputStream dos = new DataOutputStream(conn.getOutputStream());          
  StringBuffer sb = new StringBuffer();                 
  sb.append(PREFIX);                
  sb.append(BOUNDARY);               
  sb.append(LINE_END); 
  
  sb.append("Content-Disposition: form-data; name=\"file\"; filename=\""+file.getName()+"\""+LINE_END);               
  sb.append("Content-Type: application/octet-stream; charset="+CHARSET+LINE_END);         
  sb.append(LINE_END);                
  dos.write(sb.toString().getBytes());                
  InputStream is = new FileInputStream(file);                
  byte[] bytes = new byte[2048];                 
  int len = 0;                
  while ((len = is.read(bytes)) != -1) {                  
  dos.write(bytes, 0, len);           
  }               
  is.close();                 dos.write(LINE_END.getBytes());              
  byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END) .getBytes();            
  dos.write(end_data);                 
  dos.flush(); 
   res = conn.getResponseCode();                
   Toast.makeText(context, "上传成功"+res, 3);                 
   if (res==200) {                    
   Log.e(TAG, "request success");                    
   InputStream input = conn.getInputStream();                    
   StringBuffer sb1 = new StringBuffer();                   
   int ss;                     
   while ((ss = input.read()) != -1) {                   
   sb1.append((char) ss);                   
   }                    
   result = sb1.toString();                    
   Toast.makeText(context, "上传成功", 3).show();                
   } else {             
   Toast.makeText(context, "上传成功-----", 3).show();   
   }           
   } 
  }
  catch (MalformedURLException e) {           
  e.printStackTrace();    
  Toast.makeText(context, "上传失败+++", 3).show();  
  } catch (IOException e) {           
  e.printStackTrace();   
  }         
  
  return res; 
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值