Hallo, ich versuche über Sockets eine Datei vom Client zum Server zu übertragen:
Server:
Client
Bei sehr kleinen Dateien klappt das alles auch sehr gut, wir die Datei jedoch etwas größer, geht die Datei irgendwie kaputt, sie hat zwar die gleiche Größe wie die Ursprungsdatei, aber ein Bild z.B ist zu 89% schwarz, eine PDF lässt sich gar nicht öffnen.
Ich hoffe jemand kann mir sagen wo das Problem liegt.
Server:
Java:
public void downloadFile(String path) throws IOException
{
OutputStream outputStream = this.client.getOutputStream();
outputStream.write(DOWNLAOD_FILE);//Damit der Client weis, dass er eine Datei übertragen soll
byte[] buffer = new byte[4069];
for(int i=0; i<path.length(); i++)
{
buffer[i]=(byte)path.charAt(i);;
}
outputStream.write(buffer);//Pfad der Datei an client senden
outputStream.flush();
InputStream inputStrem =this.client.getInputStream();
File file=new File(path);
File outputFile = new File(file.getName());
FileOutputStream fileOutoutStream = new FileOutputStream(outputFile);
buffer = new byte[4096];
int x = inputStrem.read(buffer);
int filelength = Integer.valueOf(new String(buffer,0,x));//Länge der zu ladenen Datei erhalten
buffer = new byte[filelength];
inputStrem.read(buffer,0,filelength);//Daten der Datei erhelten
fileOutoutStream.write(buffer,0,filelength);//Datei Schreiben
fileOutoutStream.flush();
fileOutoutStream.close();
}
Client
Java:
private void uploadFile(InputStream reader) throws IOException, InterruptedException
{
byte[] buffer = new byte[4069];
int n = reader.read(buffer);
String path = new String(buffer,0,n);//Pfad zu Datei empfangen
File inputFile = new File(path);
FileInputStream fileInputStream = new FileInputStream(inputFile);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
OutputStream outputStream = this.client.getOutputStream();
PrintWriter writer = new PrintWriter(outputStream);
int filength = (int)inputFile.length();//Größe der Datei auslesen
writer.write(String.valueOf(filength));//Größe der Datei an Server senden
writer.flush();
byte buffer2[] = new byte[filength];
bufferedInputStream.read(buffer2,0,filength);//Datei einlesen
outputStream.write(buffer2);//Datei an Client senden
outputStream.flush();
}
Bei sehr kleinen Dateien klappt das alles auch sehr gut, wir die Datei jedoch etwas größer, geht die Datei irgendwie kaputt, sie hat zwar die gleiche Größe wie die Ursprungsdatei, aber ein Bild z.B ist zu 89% schwarz, eine PDF lässt sich gar nicht öffnen.
Ich hoffe jemand kann mir sagen wo das Problem liegt.