온라인 광고가 인터넷 상에서 화제가 되었습니다. 그리고 468x60은 광고 담당자가 고민하고 있는 크기가 되었습니다.
광고를 처리할 때, 광고를 처리하는 서버에 직접 브라우저를 이용해 광고의 468x60 이미지 파일을 보낼 수 있다면 매우 편할 것입니다. 그냥 업로드하는 날.
이 문제는 ASP, Prel 등을 포함한 모든 Web CGI 프로그램의 고충으로, 시스템 구성 요소를 추가해야만 해결할 수 있습니다. 가장 강력한 웹 CGI 프로그램인 PHP로 알려진 이 프로그램의 성능은 실망스럽지 않으며 심지어 다른 CGI 도구를 능가합니다.
파일 업로드 기능은 RFC 1867 문서에 자세히 설명되어 있으며 특수 파일 형식(콘텐츠 유형) multipart/form-data를 사용합니다. 파일을 업로드하려면 브라우저가 Netscape 3.0 이상 또는 MS Internet Explorer 4.0 이상이어야 한다는 점은 주목할 가치가 있습니다.
먼저 아래 HTML 소스코드를 살펴보세요
< form enctype='multipart/form-data' action='next.php' method=post > 您的大名: < input type=text name=user >< br > 档案名称: < input name='myfile' type='file' >< br > < input type='submit' value='送出' > < /form >
form 태그에 사용자가 입력한 데이터를 표현하기 위해 enctype='multipart/form-data' 문자열을 추가합니다. 파일을 업로드해야 하며 메서드는 GET 대신 POST를 사용해야 합니다.
위 코드에서 Wilson Peng에 사용자 이름을 입력하고 c:myphoto.gif 파일을 선택한 경우 사용자가 전송 버튼을 누른 후 브라우저는 다음 POST 자료를 전송합니다.
Content-type: multipart/form-data, boundary=AaB03x --AaB03x content-disposition: form-data; name='user' Wilson Peng --AaB03x content-disposition: form-data; name='myfile' Content-type: multipart/mixed, boundary=BbC04y --BbC04y Content-disposition: attachment; filename='myphoto.gif' Content-type: image/gif Content-Transfer-Encoding: binary ...myphoto.gif 内容略... --BbC04y-- --AaB03x--
위 자료를 보면 Boundary=AaB03x는 자료를 다른 필드에 남겨두라는 메시지입니다. AaB03x의 인코딩 방식은 브라우저 버전에 따라 달라지는 경우가 많습니다. . 의. 그러면 --AaB03x가 서로 다른 필드를 구분하는 데 사용되는 것을 볼 수 있습니다.
위의 예를 보면, 폼을 처리하는 액션 프로그램 next.php는 자동으로 4개의 변수를 생성합니다. 아래 표를 참고하세요.
변수명 설명
$myfile은 업로드된 파일입니다. content
$myfile_name 사용자 이름에 업로드된 파일 이름
$myfile_size 업로드된 파일의 크기
$myfile_type 'image/gif'와 같은 업로드된 파일의 형식
next.php에서 프로그램이 해야 할 가장 중요한 일은 이 네 가지 변수를 잘 활용하는 것입니다. 그렇지 않으면 사용자가 업로드한 파일은 프로그램이 종료되자마자 사라지게 됩니다. 따라서 먼저 $myfile을 광고 이미지가 저장된 디렉터리에 복사해야 합니다
copy($banner,'/home1/biglobe3/ad/'.$banner_name);
이 프로그램은 파일을 /home/htdocs/ad 디렉터리에 저장합니다. /home/htdocs/ad/myphoto.gif로. 중요한 것은 저장되는 디렉토리는 Web Server가 읽을 수 없는 디렉토리가 될 수 없고, 인터넷에서 볼 수 있도록 웹사이트의 홈페이지가 위치한 디렉토리에 위치해야 한다는 것이다.