JavaはTCP Socketに基づいてファイルアップロードを実現します。
2496 ワード
ファイルアップロードプロセスは一方向のソケット通信プロセスである。クライアントはファイル入力ストリームを通してファイルを読み取り、出力ストリーム書き込みデータをソケットから取得する。サービスがソケットから入力ストリームを取得し、ファイル出力ストリームを書き込み、データの書き込みが完了するとアップロードが完了します。
サービスエンドUploadServer:
server.accept()はスレッドをブロックしますので、server.accept()の文をサブスレッドに入れたほうがいいです。
以上はJavaがTCP Socketに基づいてファイルアップロードの詳細を実現しました。Javaファイルアップロードに関する資料は他の関連記事に注目してください。
サービスエンドUploadServer:
public class UplaodServer {
public static void main(String []args){
try(
// ServerSocket 8080
// ServerSocket AutoCloseable ,
ServerSocket server = new ServerSocket(8080);
// accept() ,
Socket socket = server.accept();
//
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
// , upload.jpg
FileOutputStream outputStream = new FileOutputStream("./upload.jpg")
){
//
byte [] buffer = new byte[1024];
int len = in.read(buffer);
while(len != -1){
//
outputStream.write(buffer, 0, len);
// Socket
len = in.read(buffer);
}
System.out.println(" ");
}catch (IOException e) {
e.printStackTrace();
}
}
}
クライアントUploadClient:
public class UploadClient {
public static void main(String []args){
try(
// Socket AutoCloseable
Socket socket = new Socket("127.0.0.1", 8080);
// Socket ,
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
FileInputStream fileInput = new FileInputStream("F:\file\oxx6j5.jpg");
//
BufferedInputStream in = new BufferedInputStream(fileInputStream);
){
//
byte[] buffer = new byte[1024];
int len = in.read(buffer);
while (len != -1) {
// Socket
out.write(buffer, 0, len);
//
len = in.read(buffer);
}
System.out.println(" !");
}catch (ConnectException e) {
System.out.println(" ");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意server.accept()はスレッドをブロックしますので、server.accept()の文をサブスレッドに入れたほうがいいです。
以上はJavaがTCP Socketに基づいてファイルアップロードの詳細を実現しました。Javaファイルアップロードに関する資料は他の関連記事に注目してください。