>백엔드 개발 >PHP 문제 >PHP에서 파일을 업로드하고 교체하는 방법

PHP에서 파일을 업로드하고 교체하는 방법

藏色散人
藏色散人원래의
2021-02-25 10:06:582862검색

PHP에서 파일을 업로드하고 바꾸는 방법: 먼저 "change.html"과 "change.php"라는 두 개의 파일을 만든 다음 "strrchar()"를 사용하여 파일을 처리한 다음 함수를 호출하여 파일을 결정합니다. 입력하고 소문자로 변환한 후 마지막으로 파일을 업로드하고 교체합니다.

PHP에서 파일을 업로드하고 교체하는 방법

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

이미지 파일 업로드 및 교체 방법

먼저 두 개의 파일을 만듭니다:change.html 및change.php

change.html 파일의 폼 코드는 다음과 같습니다.

<html>
<head>
<title>change file example.</title>
<meta charset="UTF-8">
</head>
<body>
<form method="post" action="changefile.php" enctype="multipart/form-data">
<table border=0 cellspacing=0 cellpadding=0 align=center width="100%">
<tr>
<td width=55 height=20 align="center">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
文件:
</td>
<td>
<input name="file" type="file" />
<input type="submit" name="submit" value="submit" />
</td>
</tr>
</table>
</form>
</body>
</html>

여기서 주의할 점이 몇 가지 있습니다. 먼저 5560f7944211df0b57e9941b92b268ba 여기서는 POST 메서드를 사용합니다. 물론 일부 브라우저에서는 PUT 메서드를 지원하지만 이는 권장하지 않습니다. 업로드된 파일에 일반 양식 정보가 포함되어 있음을 서버가 알 수 있도록 양식에 Enctype="multipart/form-data를 설정해야 합니다. 이 항목을 설정해야 합니다. 또한 최대 길이를 제한하려면 숨겨진 필드가 필요합니다. 업로드된 파일: < ;input type="hidden" name="MAX_FILE_SIZE" value="2000000">, 여기서 name은 MAX_FILE_SIZE로 설정되어야 하며 해당 값은 업로드된 파일의 최대 길이, 단위는 B, 여기서는 2M로 제한합니다. :f1c3c26395f0f952a2084fb0b034997b, type="file"은 파일 유형을 나타냅니다. 다음으로 기본 파일 업로드 인터페이스를 완성하겠습니다. PHP를 사용하여 업로드된 파일을 처리하는 방법에 대해 설명합니다. 또한 php.ini에 설정된 업로드 파일의 최대 길이는 실제 업로드에 영향을 미칠 수 있습니다. 또한 PHP 업로드는 먼저 업로드됩니다. 예, 예, 필요에 따라 임시 디렉토리를 수정하거나 기본값을 사용할 수 있습니다...

[권장 학습: "PHP Video Tutorial"]

다음은 양식 제출change.php 파일 코드입니다. 이 파일을 살펴보겠습니다. 무엇이 있는지:

<?php
header("content-type:text/html;charset=utf-8");
 
/**
* @param string $oldfile 需要更换的文件名(包含具体路径名)
*/
function changeFile($oldfile){
$newfile = $_FILES[&#39;file&#39;][&#39;name&#39;];//获取上传文件名
$fileclass = substr(strrchr($newfile, &#39;.&#39;), 1);//获取上传文件扩展名,做判断用
$type = array("jpg", "gif", "bmp", "jpeg", "png");//设置允许上传文件的类型
if(in_array(strtolower($fileclass), $type)){
if(file_exists($oldfile)){
unlink($oldfile);
}
if(is_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;])){//必须通过 PHP 的 HTTP POST 上传机制所上传的
if(move_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;], $oldfile)){
//输出图片预览
echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src=&#39;$oldfile&#39;></center>";
}
}else{
echo "<center>上传失败,文件大于2M,请重新上传!</center>";
}
}else{
$text = implode(",", $type);
echo "<center>您只能上传以下类型文件:", $text, "</center><br>";
// echo "<script>alert(&#39;您只能上传以下类型文件:$text&#39;)</script>";
}
}
changeFile("./files/1.png");

처음 보면 조금 어지러울 수도 있지만~~ 천천히 보시면 이런 내용이 나옵니다. 실제로는 매우 쉽습니다. 먼저 원리에 대해 이야기해 보겠습니다. 프로그램은 사진 업로드를 예로 들어 파일 형식이 이미지 형식인 경우 파일을 업로드한 다음 지정된 파일을 대체합니다. 업로드가 성공하면 업로드된 이미지의 미리보기가 출력됩니다. 먼저 substr(strrchr($newfile, '.' ), 1)을 살펴보겠습니다. strrchar() 함수의 역할은 무엇입니까? 예를 들면 모두가 알 것입니다. 예를 들어 그림 파일 pic.jpg를 처리하려면 strrchar()를 사용하고 strrchr(pic.jpg,'.')를 반환합니다. 이 함수를 이해하시나요? 문자열의 마지막 발생 이후에 문자열을 반환합니다. substr()을 사용하면 jpg를 얻을 수 있으므로 파일 확장자를 가져와서 파일이 지정된 형식을 따르는지 여부를 확인할 수 있습니다. 실제 사용 중에 필요에 따라 추가할 수 있는 배열입니다.

다음으로 함수를 호출하여 파일 유형을 결정하고 이를 소문자 strtolower($_FILES[' file']['name'])로 변환합니다. 여기서 매우 중요한 것은 처리해야 하는 양식 데이터를 저장하는 슈퍼 전역 배열인 $_FILES입니다. Register_globals가 켜져 있으면 직접 액세스할 수도 있지만 업로드 인터페이스를 보면 그렇습니다. fa68a6172e90ddc4102f2ff67a357dc2. 이 양식 이름에 따르면 다음과 같이 많은 정보를 얻을 수 있습니다.

$_FILES['file']['name']-- 파일 이름 가져오기

$_FILES['file']['tmp_name']--임시 저장 위치 가져오기

$_FILES['file']['size']--파일 크기 가져오기

$_FILES['file' ] ['type']--파일 MIME 유형을 가져옵니다

이 정보를 사용하면 파일 정보를 쉽게 확인할 수 있습니다. 매우 편리하지 않나요? 다음으로, 이해해야 할 몇 가지 함수가 있습니다. file_exists()-지정된 디렉터리가 존재하는지 확인합니다. 존재하지 않으면 당연히 업로드할 수 없습니다(말도 안되는 소리 같습니다!). 파일이 HTTP POST를 통해 업로드되었습니다. move_uploaded_file--업로드됩니다. 파일이 지정된 디렉터리로 이동됩니다. 업로드가 성공하면 미리보기가 출력되고, 그렇지 않으면 출력 업로드가 실패합니다...

위 내용은 PHP에서 파일을 업로드하고 교체하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.