English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Inhaltsverzeichnis
Bei der Implementierung eines Android-Webdienst-Client, wie z.B. eines Weibo- oder Forum-Client, wird oft das Hochladen und Herunterladen von Bildern verwendet. Hier wird erläutert, wie die Funktion des Hochladens und Herunterladens von Bildern mit Hilfe von HttpClient implementiert wird.
1 Bild hochladenBeim Hochladen eines Bildes wird zunächst der Pfad des Bildes erhalten, ein Dateiobjekt erstellt und das Bild in einen Byte-Stream umgewandelt, um es in den Request einzufügen und die Anfrage zu senden.
Clientseitigem Code:
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); //Wenn der Rückgabestatus200, erhalten Sie das Rückgaberesultat if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ ……//Bild hochgeladen erfolgreich } } catch(Exception e){ }
Die vom Server durchgeführten Arbeiten sind die Annahme des Byte-Streams, das Schreiben in die Datei und das Speichern der Datei im entsprechenden Verzeichnis des Servers, sowie das Aufzeichnen des Pfades der Datei und das Schreiben des Pfades des Bilddateis in die Datenbank.
Serverseitiger Code:
//Erhalten Sie die News-ID String gid = request.getParameter("gid"); String filePath = getRealPath(request) + "\\userpic\\"; // Definieren Sie die maximale Anzahl von Bytes für die hochgeladene Datei int MAX_SIZE = 102400 * 102400; // Erklärung der Dateileseklasse DataInputStream in = null; FileOutputStream fileOut = null; // Ermitteln Sie den Datentyp der hochgeladenen Daten des Clients String contentType = request.getContentType(); if(contentType.indexOf("binary/octet-(stream") >= 0){ // Lesen Sie die hochgeladenen Daten ein in = new DataInputStream(request.getInputStream()); int formDataLength = request.getContentLength(); // Wenn das Bild zu groß ist if(formDataLength > MAX_SIZE){ String errormsg=("Die Anzahl der Bytes der hochgeladenen Datei darf nicht größer als " + MAX_SIZE); out.println(errormsg); return ; } // Speichern Sie die Daten des hochgeladenen Dateis byte dataBytes[] = new byte[formDataLength]; int byteRead = 0; int totalBytesRead = 0; // Die hochgeladenen Daten werden im Byte-Array gespeichert 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(); } // 创建文件的写出类 fileOut = new FileOutputStream(fileName); // 保存文件的数据 fileOut.write(dataBytes); fileOut.close(); //保存文件的路径名 ……
2 图片下载:首先获取网络图片的图片地址,发送请求后,服务器将返回该图片的字节流,利用BitmapFactory.decodeStream()方法将字节流转换为图片并返回。具体代码如下:
//获取网络中的图片 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){ //获取相关信息 获取HttpEntiy HttpEntity httpEntity = httpResponse.getEntity(); InputStream is = httpEntity.getContent(); bitmap = BitmapFactory.decodeStream(is); is.close(); } else { Toast.makeText(context, "Verbindung fehlgeschlagen!", Toast.LENGTH_SHORT).show(); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bitmap; }
Interessierte Leser, die mehr über Android-Themen erfahren möchten, können die Themenbereiche dieser Website besuchen: "Zusammenfassung der Techniken zur Verarbeitung von Grafik und Bildern in Android", "Einführung und Fortschrittstutorial zur Android-Entwicklung", "Zusammenfassung der Techniken zur Fehlersuche und Behebung häufiger Probleme in Android", "Zusammenfassung der Techniken zur Multimediabearbeitung in Android (Audio, Video, Aufnahme usw.)", "Zusammenfassung der Verwendung der grundlegenden Komponenten in Android", "Zusammenfassung der Techniken zur Verwendung der Ansichten View in Android", "Zusammenfassung der Techniken zur Verwendung der Layouts in Android" und "Zusammenfassung der Verwendung der Steuerelemente in Android".
Es wird gehofft, dass die in diesem Artikel beschriebenen Inhalte der Android-Programmierung der Allgemeinheit helfen.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem jeweiligen Urheber. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige urheberrechtliche Inhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @ beim Senden einer E-Mail zur Meldung von Verstößen und stellen Sie relevante Beweise zur Verfügung. Bei nachgewiesener Rechtsverletzung wird diese Website die fraglichen Inhalte sofort löschen.)