전송경로 : http://localhost/upload.php
전송할 파일명: C:\bloodguy.jpg
$_FILES 이름 : uploadImage



Delphi
// uses 에 TIdHTTP, IdMultiPartFormData, Classes 추가

procedure TForm1.Button1Click(Sender: TObject);
var
  MultiPartFormData: TIdMultiPartFormDataStream;
  ResultStr: TStringStream;

begin
  MultiPartFormData:=TIdMultiPartFormDataStream.Create;
  ResultStr:=TStringStream.Create;
  try
    // Request 세팅
    FIdHTTP.Request.UserAgent:='BloodguyBrowser-_-';
    FIdHTTP.Request.ContentType:=MultiPartFormData.RequestContentType;

    // 파일첨부
    MultiPartFormData.AddFile('uploadImage', 'C:\bloodguy.jpg', 'application/octet-stream');
    MultiPartFormData.Position:=0;

    // POST 전송
    try
      FIdHTTP.Post('http://localhost/upload.php', MultiPartFormData, ResultStr);
    except on E:Exception do
      OutputDebugString(PWideChar('POST 전송실패 : '+E.Message));
    end;
    // 응답결과
    OutputDebugString(PWideChar(ResultStr.DataString));
  finally
    FreeAndNil(MultiPartFormData);
    FreeAndNil(ResultStr);
  end;
end;







PHP

<?
  // USER_AGENT 체크
  if ($_SERVER['HTTP_USER_AGENT']!='BloodguyBrowser-_-') die("지랄하고 자빠졌네");

  if ($_FILES['uploadImage']['error']==UPLOAD_ERR_OK) {
    $uploadPath='C:\htdocs\upload_files\';
    // 파일명 정하기. 귀찮아서 대충 발라버린 코드 (-_-;)
    $i=0;
    while ($i<99999) {
      $imgFile=$uploadPath.'\'.time().'_'.$i.'jpg'; // 경악! 무조건 jpg
      // 정한 파일명을 가진 파일이 없으니 잽싸게 업로드하고 토끼자.
      if (file_exists($imgFile)==false) {
        move_uploaded_file($_FILES['uploadImage']['tmp_name'], $imgFile);
        exit;
      }
      $i++;
    }
  }
?>












Posted by bloodguy
,