Datei an Server senden - UTF-8

  • 1 Antworten
  • Letztes Antwortdatum
G

Galaxy S3 / Tab 10.1

Neues Mitglied
0
Hallo zusammen,

ich habe eine Funktion (siehe unten) die eine Datei f an einen Server mit PHP sendet.
Nun gibt es allerdings das Problem mit Umlauten, der Server braucht UTF-8-Kodierung, die Datei ist im Standard-Java-Charset (Windows 1252?).

Was muss ich nun an der Funktion anpassen, damit die Datei umkodiert hochgeladen wird?

Vielen Dank für Eure Hilfe!
Code:
public String uploadFile(File f, String address, String name){
		HttpURLConnection connection = null;
		DataOutputStream outputStream = null;
		String lineEnd = "\r\n";
		String twoHyphens = "--";
		String boundary =  "*****";
		int bytesRead, bytesAvailable, bufferSize;
		byte[] buffer;
		int maxBufferSize = 1*1024*1024;
		try{
			FileInputStream fileInputStream = new FileInputStream(f);
			URL url = new URL(address);
			connection = (HttpURLConnection) url.openConnection();
			connection.setDoInput(true);
			connection.setDoOutput(true);
			connection.setUseCaches(false);
			connection.setRequestMethod("POST");
			connection.setRequestProperty("Connection", "Keep-Alive");
			connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
			outputStream = new DataOutputStream(connection.getOutputStream());
			outputStream.writeBytes(twoHyphens + boundary + lineEnd);
			outputStream.writeBytes("Content-Disposition: form-data; name=\""+name+"\";filename=\"" + name +"\"" + lineEnd);
			outputStream.writeBytes("Content-Type: text/plain;"+lineEnd);
			outputStream.writeBytes(lineEnd);
			bytesAvailable = fileInputStream.available();
			bufferSize = Math.min(bytesAvailable, maxBufferSize);
			buffer = new byte[bufferSize];
			bytesRead = fileInputStream.read(buffer, 0, bufferSize);
			while (bytesRead > 0){
				outputStream.write(buffer, 0, bufferSize);
				bytesAvailable = fileInputStream.available();
				bufferSize = Math.min(bytesAvailable, maxBufferSize);
				bytesRead = fileInputStream.read(buffer, 0, bufferSize);
			}
			outputStream.writeBytes(lineEnd);
			outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
			fileInputStream.close();
			outputStream.flush();
			outputStream.close();
			BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
		    StringBuilder stb = new StringBuilder();
		    String line = null;
		    while ((line = reader.readLine()) != null){
		       stb.append(line + "\n");
		    }
			return stb.toString();
		}
		catch (Exception ex){
			return "";
		}
	}
 
DataOutputStream kennt neben writeByte auch .writeUTF
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Galaxy S3 / Tab 10.1

Ähnliche Themen

AnnaBauer21
Antworten
0
Aufrufe
498
AnnaBauer21
AnnaBauer21
D
Antworten
8
Aufrufe
800
jogimuc
J
S
Antworten
7
Aufrufe
1.270
Silvasurf
S
AnnaBauer21
Antworten
6
Aufrufe
1.012
AnnaBauer21
AnnaBauer21
Zurück
Oben Unten