-2

when i try upload file from client device to server using socket in java. it get uploaded in server but the problem is that when i tried to open it show some error.(for example:if i upload photos from client to server,it get uploaded but when i tried to open it show error "unsupported file format".

clientSide:

DataOutputStream dos = new DataOutputStream(tmp.getClientSocket().getOutputStream());
    BufferedInputStream fileReader=new BufferedInputStream(new FileInputStream(f));
    byte[] buffer = new byte[1024];
    int byteRead=0;
    while((byteRead=fileReader.read(buffer))!=-1) {
        dos.write(buffer,0,byteRead);
        dos.flush();
        System.out.println("uploading "+byteRead);
    }

    fileReader.close();


    System.out.println("uploading file completed");

serverSide:

String filename=this.input.readLine();
    System.out.println("file to be upload is "+filename);
    InputStream inputByte=socket.getInputStream();
    BufferedInputStream input=new BufferedInputStream(inputByte);

    String response=this.input.readLine();
    if(response.equals("start")) {

    BufferedOutputStream outputFile=new BufferedOutputStream(new FileOutputStream(projectDirPath+"\\"+filename));
    byte[] buffer =new byte[1024];
    int byteRead=0;

    while((byteRead=input.read(buffer))!=-1) {

        outputFile.write(buffer,0,byteRead);
        outputFile.flush();
        System.out.println("uploading "+byteRead);
    }
    outputFile.close();

    }else {
        System.out.println("nothing to upload");
    }

1 Answers1

-2

client side:

    String path = "path";
    String fileName = "fileName.ext";
    try (Socket socket = new Socket("localhost", port)) {
        File file = new File(path, fileName);

        OutputStream os = socket.getOutputStream();
        BufferedOutputStream bos = new BufferedOutputStream(os);
        try (DataOutputStream dos = new DataOutputStream(bos)) {                
            FileInputStream fis = new FileInputStream(file);
            try (BufferedInputStream bis = new BufferedInputStream(fis)) {
                dos.write(IOUtils.toByteArray(bis));
            }
        }
    }
    catch(Exception e) {
        e.printStackTrace();
    }

Server Side:

try {
    ServerSocket serverSocket = new ServerSocket(port);
    Socket socket = serverSocket.accept();
    File tempFile = new File(path, fileName);
    InputStream is = socket.getInputStream();
    BufferedInputStream bis = new BufferedInputStream(is);
    try (DataInputStream dis = new DataInputStream(bis)) {
        FileOutputStream fos = new FileOutputStream(tempFile);
        try (BufferedOutputStream bos = new BufferedOutputStream(fos)) {
            bos.write(IOUtils.toByteArray(dis));
        }
    }
}
catch(Exception e) {
    e.printStackTrace();
}
Ravi S.
  • 68
  • 1
  • 17