PHP move_uploaded_file()함수(업로드 한 파일 을 새 위치 로 이동)
7871 단어 PHPmove uploaded file
4.567914.함수 가 업로드 한 파일 을 새로운 위치 로 이동 합 니 다.
성공 하면 true 로 돌아 갑 니 다.그렇지 않 으 면 false 로 돌아 갑 니 다.
문법
move_uploaded_file(file,newloc)
매개 변수
묘사 하 다.
file
필수이동 할 파일 을 정 하 다.
newloc
필수문서 의 새 위 치 를 규정 하 다.
설명 하 다.
이 함 수 는 file 이 지정 한 파일 이 합 법 적 으로 업로드 되 었 는 지 확인 합 니 다(즉,PHP 의 HTTP POST 업로드 메커니즘 을 통 해 업로드 되 었 습 니 다).파일 이 합 법 적 이면 new loc 가 지정 한 파일 로 이동 합 니 다.
file 이 합 법 적 으로 파일 을 업로드 하지 않 으 면 어떠한 조작 도 일어나 지 않 습 니 다.moveuploaded_file()은 false 로 돌아 갑 니 다.
file 이 합 법 적 으로 파일 을 업로드 하지만 어떤 이유 로 이동 할 수 없 으 며 어떠한 조작 도 일어나 지 않 습 니 다.moveuploaded_file()은 false 로 돌아 가 고 경 고 를 보 냅 니 다.
이 검 사 는 특히 중요 하 다.업로드 한 파일 이 사용자 나 이 시스템 의 다른 사용자 에 게 내용 을 표시 할 수 있다 면.
제시 와 주석
설명:이 함 수 는 HTTP POST 를 통 해 업로드 되 는 파일 에 만 사 용 됩 니 다.
메모:대상 파일 이 존재 하면 덮어 씁 니 다.
안전
w3c 의 소개 로 제 가 만난 문 제 를 말씀 드 리 겠 습 니 다.
일반적으로 우 리 는 저장 파일 을 이렇게 쓴다.
$fileName = $_SERVER['DOCUMENT_ROOT'].'/Basic/uploads/'.$_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'],$fileName )
먼저 이 두 코드 의 의 미 를 설명 합 니 다.파일 을 직접 저장 하 는 동시에 파일 이름 도 사용자 가 업로드 한 파일 이름 입 니 다.자,이제 위험 이 온다.
① 파일 을 직접 저장한다.
이것 은 파일 을 식별 하지 않 는 다 는 것 을 의미 합 니 다.만약 에 사용자 가 배경 코드 를 jpg 접미사 나 다른 것 으로 저장 했다 면 관리자 가 주의 하지 않 고 phop 으로 표시 한 다음 에 이 배경 에 방문 하면 그 가 배경 에서 있 는 데이터 베 이 스 를 삭제 하면 전체 사이트 가 직접 GG 를 실행 할 것 임 을 알 수 있 습 니 다.아무튼 파일 을 직접 저장 하 는 것 은 위험 하 다.
② 사용자 파일 이름과 같은 파일 이름 을 사용 합 니 다.
상기 코드 는 사용자 가 중국어 파일 이름 을 사용 하면 오류 가 발생 할 수 있 습 니 다.
파일 이름 이 걸 리 면 인 코딩 이 걸 려 있 습 니 다.파일 이름 이 영어+숫자 라면 괜 찮 습 니 다.중국 어 를 포함 하면 머리 가 크 고 다시 인 코딩 해 야 합 니 다.
나 는 믿 을 만 한 보존 이 이렇게 해 야 한다 고 생각한다.
① 사용자 가 업로드 한 파일 을 식별 해 야 한다.
파일 인식,이 부분 은 여러 가지 기능 이 있 는데 MIME type 을 사용 하면 좋 을 것 같 고 이것 도 위조 하기 어렵다 고 생각 합 니 다.
② 파일 이름 을 바 꿔 야 한다.
나 는 시간의 형식 으로 바 꾸 는 것 이 가장 좋다 고 생각한다.예 를 들 어'2018032641421'과 같은 파일 이름 도 파일 이름과 데이터 베 이 스 를 대응 할 수 있다.
보충:
두 개의 인자 가 있 습 니 다.첫 번 째 인 자 는 업로드 한 임시 파일 이름 으로 시스템 에서 자동 으로 생 성 됩 니 다.보통 그 스타일 은:
$_FILE["file"]["tmp_name"];
그 중의 file 은 프론트 파일 에 폼 의 이름 을 올 려 줍 니 다.
두 번 째 매개 변 수 는 경로 가 있 는 새로운 파일 이름 을 포함 하 는 것 입 니 다.예:
"upload/1.jpg";
그러면 업로드 한 파일 을 현재 디 렉 터 리 의 upload 라 는 하위 디 렉 터 리 로 이동 하고 파일 이름 을 1.jpg 로 저장 합 니 다.
move_uploaded_file()함수 인 스 턴 스
move 사용uploaded_file()함수 가 서버 에 파일 을 업로드 합 니 다.
<?php
$tmp_filename = $_FILES['myupload']['tmp_name'];
if(!move_uploaded_file($tmp_filename,"/path/to/dest/{$_FILES['myupload']['name']}")) {
echo "An error has occurred moving the uploaded file.<BR>";
echo "Please ensure that if safe_mode is on that the " . "UID PHP is using matches the file.";
exit;
} else {
echo "The file has been successfully uploaded!";
}
?>
move_uploaded_file 파일 업로드 실패 사례 및 해결 방법오늘 사용자 가 등록 할 때 이미지 파일 을 업로드 하 는 PHP 스 크 립 트 를 구현 할 때 문제 가 발생 했 습 니 다.php 스 크 립 트 코드 는 다음 과 같 습 니 다.
<?php
define('ROOT',dirname(__FILE__).'/');
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
if(is_uploaded_file($_FILES['file']['tmp_name'])){
$stored_path = ROOT.'/upload/'.basename($_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'],$stored_path)){
echo "Stored in: " . $stored_path;
}else{
echo 'Stored failed:file save error';
}
}else{
echo 'Stored failed:no post ';
}
}
}
?>
위의 스 크 립 트 를 실행 할 때 스 크 립 트 출력"Stored failed:file save error"가 잘못 되 었 습 니 다.phperror_log 파일 에서 오류 문 제 를 보 았 습 니 다.권한 이 부족 해서 오류 가 발생 한 곳 을 찾 았 습 니 다.저희 가 그림 을 저장 하 는 목적 디 렉 터 리 는 PHP 를 실행 하 는 사용자 에 게 권한 이 없습니다.PHP 스 크 립 트 를 실행 하 는 사용자 와 제 가 스 크 립 트 코드 를 쓰 고 그림 폴 더 를 만 드 는 사용 자 는 같은 사용자 가 아니 기 때문에 파일 권한 을 777 로 바 꾸 면 됩 니 다.PHP 개발 학습 파일 업로드(moveuploaded_file)
기능:업 로드 된 임시 파일 을 upload 디 렉 터 리 아래로 이동 합 니 다.upload 는 루트 디 렉 터 리 에서 이미 만 들 어 졌 습 니 다!!
<form action="" enctype="multipart/form-data" method="post"
name="uploadfile"> :<input type="file" name="upfile" /><br>
<input type="submit" value=" " /></form>
<?php
//print_r($_FILES["upfile"]);
if(is_uploaded_file($_FILES['upfile']['tmp_name'])){
$upfile=$_FILES["upfile"];
//
$name=$upfile["name"];//
$type=$upfile["type"];//
$size=$upfile["size"];//
$tmp_name=$upfile["tmp_name"];//
//
switch ($type){
case 'image/pjpeg':$okType=true;
break;
case 'image/jpeg':$okType=true;
break;
case 'image/gif':$okType=true;
break;
case 'image/png':$okType=true;
break;
}
if($okType){
/**
* 0: <br/>
* 1: , php.ini <br/>
* 2: MAX_FILE_SIZE <br/>
* 3: <br/>
* 4: <br/>
* 5: 0
*/
$error=$upfile["error"];//
echo "================<br/>";
echo " :".$name."<br/>";
echo " :".$type."<br/>";
echo " :".$size."<br/>";
echo " :".$error."<br/>";
echo " :".$tmp_name."<br/>";
echo " <br/>";
// upload (upload !!!)
move_uploaded_file($tmp_name,"upload/".$name);
$destination="upload/".$name;
echo "================<br/>";
echo " :<br/>";
if($error==0){
echo " !";
echo "<br> :<br>";
echo "<img src=".$destination.">";
//echo " alt=\" :\r :".$destination."\r :\">";
}elseif ($error==1){
echo " , php.ini ";
}elseif ($error==2){
echo " MAX_FILE_SIZE ";
}elseif ($error==3){
echo " ";
}elseif ($error==4){
echo " ";
}else{
echo " 0";
}
}else{
echo " jpg,gif,png !";
}
}
?>
실행 결과:자,이 글 은 여기까지 소개 하 겠 습 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.