본문 바로가기
프로그래밍/PHP

[펌]PHP socket을 이용한 파일 전송

by 백룡화검 2008. 10. 16.

송신

function socketTrans($host,$sendPort,$receivePath,$file_name,$tfile){

  $port = $sendPort; // 원격 서버 포트
  $path = $receivePath; // 화일을 받아서 처리해주는 화일명 /reomote_url

  srand((double)microtime()*1000000);
  $boundary = "---------------------------".substr(md5(rand(0,32000)),0,10);

  // Build the header
  $header = "POST $path HTTP/1.0\r\n";
  $header .= "Host: $host\r\n";
  $header .= "Content-type: multipart/form-data, boundary=$boundary\r\n";

  $data .="--$boundary\r\n";
  $data .= "Content-Disposition: form-data; name=\"".$index."\"\r\n";
  $data .= "\r\n".$value."\r\n";
  $data .="--$boundary\r\n";

  // and attach the file
  $data .= "--$boundary\r\n";

  //$content_file = join("", file("./up/".$file_name));
  $content_file = join("", file($tfile));
  $data .="Content-Disposition: form-data; name=\"upfile\"; filename=\"$file_name\"; filename=\"$file_name\"\r\n";
  $data .= "Content-Type: $content_type\r\n\r\n";
  $data .= "".$content_file."\r\n";
  $data .="--$boundary--\r\n";
  $header .= "Content-length: " . strlen($data) . "\r\n\r\n";
     // Open the connection

  $f = fsockopen($host, $port);
 
  if(!@$f){
    echo "<script language='javascript'>
    alert('$host 소켓이상입니다.');
    </script>";
  } else {
   fputs($f,$header.$data);
   while (!feof($f)) $result .= fread($f,32000); //
  }
}
/////////////////////////



수신


if (!@copy($_FILES['upfile']['tmp_name'], $upDirectory.$_FILES['upfile']['name'])) {

 //원본 파일 복사도중 에러
 echo "<script language='javascript'>
 alert('원본 파일을 복사하는도중 에러가 발생했습니다.\\n관리자에게 문의하여 주십시오');

 </script>";

}

//move_uploaded_file($_FILES['upfile']['tmp_name'], './'.$_FILES['upfile']['name']);


if (!@unlink($_FILES['upfile']['tmp_name'])) {
    //원본 파일 삭제도중 에러
 echo "<script language='javascript'>
 alert('원본 파일을 삭제하는도중 에러가 발생했습니다.\\n업로드는 완료되었습니다');
 
 </script>";
 
}