Java SE/Socket Img Upload

Java Image Upload using Socket

Soul-Learner 2014. 5. 30. 17:23

클라이언트 측에서 Socket 을 이용하여 서버측에 이미지 파일을 업로드하는 예


Server.java

import java.awt.image.*;

import java.io.*;

import java.net.*;

import javax.imageio.ImageIO;


public class Server {

    

    public static void main(String[] args) {

        

        ServerSocket ss = null;

        try {

            ss = new ServerSocket(1234);

            

            System.out.println("서버 작동....");

            Socket socket = ss.accept();


            InputStream is = socket.getInputStream();

            BufferedImage bimg = ImageIO.read(is);

            FileOutputStream fout = new FileOutputStream("d:/test/upload.png");

            ImageIO.write(bimg, "png", fout);


            fout.close();

            

            System.out.println("서버: 이미지수신 및 파일에 저장완료");

        } catch (IOException ex) {

            ex.printStackTrace();

        }

    }

}



Client.java

import java.awt.image.BufferedImage;

import java.io.*;

import java.net.Socket;

import javax.imageio.ImageIO;

import javax.swing.*;


public class Client {

    

    public static void main(String[] args) {


        JLabel jLabel = new JLabel();

        File imgFile = new File("d:/test/sample.jpg");

        BufferedImage bufferedImg = null;

        try {

            bufferedImg = ImageIO.read(imgFile);

            ImageIcon imgIcon = new ImageIcon(bufferedImg);

            jLabel.setIcon(imgIcon);


// JLabel 에 설정된 이미지를 서버에 업로드한다

            uploadImg(jLabel);

        } catch (Exception ex) {

            ex.printStackTrace();

        }

    }

    

    // JLabel 에 포함된 ImageIcon 데이터를 BufferedImage 로 변환하여

    // 서버로 전송한다

    private static void uploadImg(JLabel jLabel) {

        ImageIcon icon = (ImageIcon)jLabel.getIcon();

        BufferedImage bi = (BufferedImage)icon.getImage();

        Socket socket = null;

        try {

            socket = new Socket("localhost",1234);

            OutputStream outStream = socket.getOutputStream();

            ImageIO.write(bi, "png", outStream);

            outStream.close();

            System.out.println("클라이언트: 이미지 파일 업로드 완료");

        } catch (IOException ex) {

            ex.printStackTrace();

        }

    }

}