Hallo Zusammen,
komm hier nicht weiter :/. Eine Upload-Methode überträgt via HTTP-POST eine Datei. Das funzt mit Textdateien ganz gut. Nehm ich jetzt z.B. eine PDF kommt leider nichts gescheites bei raus (Datei wird komplett übertragen aber beim binären Vergleich sehe ich schon, dass Deltas vorhanden sind).
(zur Veranschaulichung static):
Aufruf:
ich weiß, dass man beim Kopieren von Dateien einen FileChannel nimmt. Aber ich kann ja nicht einfach aus dem Outputstream der Connection einen FileChannel machen, oder? Wie mache ich das sonst?
Danke und Grüße
nrg
komm hier nicht weiter :/. Eine Upload-Methode überträgt via HTTP-POST eine Datei. Das funzt mit Textdateien ganz gut. Nehm ich jetzt z.B. eine PDF kommt leider nichts gescheites bei raus (Datei wird komplett übertragen aber beim binären Vergleich sehe ich schon, dass Deltas vorhanden sind).
(zur Veranschaulichung static):
Java:
private static String httpPost(URL url, InputStream body) throws IOException {
OutputStreamWriter osw = null;
InputStreamReader isr = null;
try {
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
osw = new OutputStreamWriter(conn.getOutputStream());
int i = 0;
while ((i = body.read()) != -1)
osw.write(i);
osw.flush();
isr = new InputStreamReader(conn.getInputStream());
CharBuffer cb = CharBuffer.allocate(DEFAULT_BUFFER_SIZE);
StringBuilder sb = new StringBuilder();
while (isr.read(cb) != -1) {
sb.append(cb.flip());
cb.clear();
}
return sb.toString();
} catch (IOException ioe) {
throw ioe;
} finally {
try { osw.close(); } catch (Exception ignore) {}
try { isr.close(); } catch (Exception ignore) {}
}
}
Aufruf:
Java:
String res = httpPost("http://servername:port/bla, new DataInputStream(new FileInputStream(file)));
ich weiß, dass man beim Kopieren von Dateien einen FileChannel nimmt. Aber ich kann ja nicht einfach aus dem Outputstream der Connection einen FileChannel machen, oder? Wie mache ich das sonst?
Danke und Grüße
nrg
Zuletzt bearbeitet: