Java Image Upload using Socket
클라이언트 측에서 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();
}
}
}