android 上傳/下載 圖片

public class HttpAssist {緩存

  
     private static final String TAG = "uploadFile"; 
     private static final int TIME_OUT = 10 * 10000000; // 超時時間 
     private static final String CHARSET = "utf-8"; // 設置編碼 
     public static final String SUCCESS = "1"; 
     public static final String FAILURE = "0"; 
    
     //上傳文件
     public static String uploadFile(File file) {
      
      
         String BOUNDARY = UUID.randomUUID().toString(); // 邊界標識 隨機生成 
         String PREFIX = "--", LINE_END = "\r\n"; 
         String CONTENT_TYPE = "multipart/form-data"; // 內容類型  
         //請求URL
         String RequestURL = "http://192.168.0.100:7080/YkyPhoneService/Uploadfile1";  
         //String RequestURL = "http://www.hong3.com/Fortest/getfiles";
         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); // 容許輸出流 
             // Post 請求不能使用緩存
             conn.setUseCaches(false); // 不容許使用緩存 
             conn.setRequestMethod("POST"); // 請求方式 
             conn.setRequestProperty("Charset", CHARSET); // 設置編碼 
             conn.setRequestProperty("connection", "keep-alive"); 
             conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" 
                     + BOUNDARY); 
             if (file != null) { 
                 /**
                  * 當文件不爲空,把文件包裝而且上傳
                  */ 
                 OutputStream outputSteam = conn.getOutputStream(); 
  
                 DataOutputStream dos = new DataOutputStream(outputSteam); 
                 StringBuffer sb = new StringBuffer(); 
                 sb.append(PREFIX); 
                 sb.append(BOUNDARY); 
                 sb.append(LINE_END); 
                 /**
                  * 這裏重點注意: name裏面的值爲服務器端須要key 只有這個key 才能夠獲得對應的文件 ,也就是此處的uploadfile,
                  * filename是文件的名字,包含後綴名的 好比:abc.png
                  */ 
                
                 sb.append("Content-Disposition: form-data; name=\"uploadedfile\"; 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[1024]; 
                 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(); 
                 /**
                  * 獲取響應碼 200=成功 當響應成功,獲取響應的流
                  */ 
                 int res = conn.getResponseCode(); 
                 if (res == 200) { 
                     return SUCCESS; 
                 } 
             } 
         } catch (MalformedURLException e) { 
             e.printStackTrace(); 
         } catch (IOException e) { 
             e.printStackTrace(); 
         } 
         return FAILURE; 
     } 
  
     /**
      * 從服務器取圖片
      * @param url
      * @return
      */
      public static Bitmap getHttpBitmap(String url) {
       
           URL myFileUrl = null;
           Bitmap bitmap = null;
         
           try {
                myFileUrl = new URL(url);
            //myFileUrl = new URL(s);
           } catch (MalformedURLException e) {
                e.printStackTrace();
           }
           try {
          
                HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
                conn.setConnectTimeout(0);
                conn.setDoInput(true);
                conn.setDoOutput(true);
                conn.setUseCaches(false);
                conn.connect();
                System.setProperty("http.keepAlive", "false"); 
                InputStream is = conn.getInputStream();
                bitmap = BitmapFactory.decodeStream(is);
                is.close();
                return bitmap;
           } catch (IOException e) {
                e.printStackTrace();
                return null;
           }
          
      }服務器

}app

相關文章
相關標籤/搜索