中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Android中圖片的上傳和下載代碼

2018-07-20    來源:open-open

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

      在實(shí)現(xiàn)一個Android的WEB服務(wù)客戶端,比如微博,論壇客戶端時,經(jīng)常會使用到圖片的上傳和下載。在這里介紹如何利用HttpClient實(shí)現(xiàn)圖片的上傳和下載功能。

1 圖片上傳:上傳圖片時,首先獲得圖片的路徑,創(chuàng)建文件,并將圖片轉(zhuǎn)化為字節(jié)流寫入到request,并發(fā)送該請求。

客戶端代碼:     
File file = new File(imageUrl);   
        String httpUrl = httpDomain+"AddImageServlet"+"?gid="+gid;   
        HttpPost request = new HttpPost(httpUrl);    
        HttpClient httpClient = new DefaultHttpClient();  
        FileEntity entity = new FileEntity(file,"binary/octet-stream");  
        HttpResponse response;  
try {  
            request.setEntity(entity);  
            entity.setContentEncoding("binary/octet-stream");  
            response = httpClient.execute(request);  
              
//如果返回狀態(tài)為200,獲得返回的結(jié)果  
 if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){    
……//圖片上傳成功             
}  
}  
catch(Exception e){   
}  



服務(wù)器端所做的工作則是接收該字節(jié)流,寫入文件中,并在服務(wù)器中相應(yīng)文件夾中保存該文件,并記錄該文件的路徑,將圖片文件路徑寫入到數(shù)據(jù)庫中保存。

服務(wù)器端代碼:

//獲得新聞id  
        String gid = request.getParameter("gid");         
        String filePath = getRealPath(request) + "\\userpic\\";   
        //      定義上載文件的最大字節(jié)   
        int MAX_SIZE = 102400 * 102400;           
        //      聲明文件讀入類   
        DataInputStream in = null;   
        FileOutputStream fileOut = null;              
        //      取得客戶端上傳的數(shù)據(jù)類型   
        String contentType = request.getContentType();                
        if(contentType.indexOf("binary/octet-stream") >= 0){   
            //      讀入上傳的數(shù)據(jù)   
            in = new DataInputStream(request.getInputStream());   
            int formDataLength = request.getContentLength();   
            //  如果圖片過大  
            if(formDataLength > MAX_SIZE){   
                String errormsg=("上傳的文件字節(jié)數(shù)不可以超過" + MAX_SIZE);  
                out.println(errormsg);  
                return ;  
            }   
        //      保存上傳文件的數(shù)據(jù)   
        byte dataBytes[] = new byte[formDataLength];   
        int byteRead = 0;   
        int totalBytesRead = 0;   
        //      上傳的數(shù)據(jù)保存在byte數(shù)組   
        while(totalBytesRead < formDataLength){   
        byteRead = in.read(dataBytes,totalBytesRead,formDataLength);   
        totalBytesRead += byteRead;   
          }   
        String fileName = filePath + gid+".png";  
         //     檢查上載文件的目錄是否存在   
        File fileDir = new File(filePath);   
        if(!fileDir.exists()){   
        fileDir.mkdirs();   
        }  
        //      創(chuàng)建文件的寫出類   
        fileOut = new FileOutputStream(fileName);   
        //      保存文件的數(shù)據(jù)   
        fileOut.write(dataBytes);   
        fileOut.close();  
          
        //保存文件的路徑名  
……    

2 圖片下載:首先獲得網(wǎng)絡(luò)圖片的圖片地址,發(fā)送請求后,服務(wù)器將會返回該圖片的字節(jié)流,利用BitmapFactory.decodeStream()方法將字節(jié)流轉(zhuǎn)化為圖片并返回。具體代碼如下:
//獲得網(wǎng)絡(luò)中的圖片  
    public Bitmap getGossipImage(String gid){         
        String httpUrl = httpDomain+"userpic/"+gid+".png";        
        Bitmap bitmap = null;            
        HttpGet httpRequest = new HttpGet(httpUrl);    
        //取得HttpClient 對象    
        HttpClient httpclient = new DefaultHttpClient();    
        try {    
            //請求httpClient ,取得HttpRestponse    
            HttpResponse httpResponse = httpclient.execute(httpRequest);    
            if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){    
                //取得相關(guān)信息 取得HttpEntiy    
                HttpEntity httpEntity = httpResponse.getEntity();    
                InputStream is = httpEntity.getContent();                   
                bitmap = BitmapFactory.decodeStream(is);    
                is.close();     
            }else{    
                 Toast.makeText(context, "連接失敗!", Toast.LENGTH_SHORT).show();        
            }     
                
        } catch (ClientProtocolException e) {    
            e.printStackTrace();    
        } catch (IOException e) {     
            e.printStackTrace();    
        }      
        return bitmap;  
    }  
  

標(biāo)簽: 代碼 服務(wù)器 服務(wù)器端 數(shù)據(jù)庫 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:php實(shí)現(xiàn)簡單的源碼語法高亮函數(shù)

下一篇:利用imagick庫把PDF轉(zhuǎn)成PNG格式的PHP代碼