# [URLConnection] Bilder hochladen - aber anders!



## anon@ara.org (11. Okt 2008)

Hallo,

wie der Titel schon verrät möchte ich über eine URL Connection Bilder hochladen. 
Da ich nicht genau weiß, wie man soetwas sauber implementiert habe ich mir Gedanken dazu gemacht. Das Analogon mittels HTML-Formular funktioniert da ähnlich! 

Doch ich habe keine Ahnung, wie ich dies nun realisieren soll ("auch mit multipart...")! Also bin ich mal auf die Suche gegangen und habe keine wesentlichen Erkenntnisse hinzugewonnen, da die meißen Tutorials da mit einem Socket vorgehen!

Irgendwo habe ich gelesen, dass man mit Java das Bild einlesen soll und dann mit base_64decode umwandeln soll, mit URLConnection via POST an das PHP-Skript übergeben soll und dann wieder rückwandeln soll und speichern soll!

Wie "sicher2(= also wie wahrscheinlich ist es, dass es von den meißten Arbeitsplätzen ohne Probleme funktioniert) ist dies??

Ich möchte nun die Datei verschlüsseln! Dies würde sich doch bei dieser Lösung anbiegen, oder? 
Bsp.:

```
// im Pseudocode
String bildVerschluesselt = verschluessele(base64_decode( ...Datei... ),"Passwort");
out.print("file="+bildVerschluesselt);
```

Könnt Ihr mir vielleicht helfen, bittte  :cry: 
anon@ara.org[/code]


----------



## anon@ara.org (12. Okt 2008)

Hier der Code, den ich mir bisher zusammen gesucht und gebastelt habe:

```
public class usl {

	public static String encodeBase64String(byte abyte0[], int i, int j)
	  {
	    if(abyte0 == null)
	      return null;
	    int k = 0;
	    int l = 0;
	    StringBuffer stringbuffer = new StringBuffer(((j + 2) / 3) * 4);
	    for(int i1 = 0; i1 < j; i1++)
	    {
	      k = (k << 8) + (abyte0[i + i1] & 0xff);
	      for(l += 8; l >= 6;l--)
	      {
	        l -= 6;
	        stringbuffer.append("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k >>> l & 0x3f));
	      }

	    }

	    if(l == 2)
	    {
	      stringbuffer.append("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k & 3) << 4));
	      stringbuffer.append("==");
	    } else
	    if(l == 4)
	    {
	      stringbuffer.append("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k & 0xf) << 2));
	      stringbuffer.append('=');
	    }
	    return stringbuffer.toString();
	  }

	public static void main(String[] args) {



			 byte[] dataa = FileUtil.readBinaryFile("c:/1.png");
			 String f = "";
			f = usl.encodeBase64String(dataa,0,dataa.length);
	
			 try {
			 
		        // Construct data
		        String data = URLEncoder.encode("file", "UTF-8") + "=" + URLEncoder.encode(f, "UTF-8");
		    
		        // Send data
		        URL url = new URL("http://localhost/test.php");
		        URLConnection conn = url.openConnection();
		        conn.setDoOutput(true);
		        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
		        wr.write(data);
		        wr.flush();
		    
		        // Get the response
		        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
		        String line;
		        while ((line = rd.readLine()) != null) {
		            // Process line...
		        	System.out.println(line);
		        }
		        wr.close();
		        rd.close();
		    } catch (Exception e) {
		    }

	}
	
}
```

Also das klappt irgendwie nicht mit dem einlesen der Datei (in Java) und dann als base64 versenden ...


----------



## HoaX (12. Okt 2008)

und was klappt da genau nicht? das einlesen, das base64 erzeugen oder das senden?


----------



## anon@ara.org (12. Okt 2008)

Also, das Einlesen Funktioniert, das Base64 Erzeugen auch und auch PHP bekommt den String und kann ihn "Rückschlüsseln", aber hier fehlen Teile und das Bild kann nicht angezeigt werden.


----------



## HoaX (13. Okt 2008)

was macht FileUtil.readBinaryFile ?


----------

