2017-12-07 11 views
0

PHP를 사용하여 웹 사이트의 간단한 파일 업로드 기능을 만들려고합니다. 대부분의 코드가 정상적으로 작동한다고 생각합니다. one.com을 사용하고 있는데 자산 폴더가 있고이 폴더 안에 이미지 폴더가 있습니다. 여기에 이미지를 업로드 할 위치가 있습니다. 파일 이미지 경로에 넣을 내용을 확신 할 수 없습니다. 이미지를 업로드하려고하면 '완료'가 페이지에 표시되지만 이미지는 폴더에 표시되지 않습니다.one.com에서 PHP로 이미지 업로드 기능 만들기

if(isset($_POST['submit'])){ 


// GETTING INFO FROM FILE WE'VE UPLOADED 
$file = $_FILES['image']; 
$fileName = $_FILES['image']['name']; 
$fileTmpName = $_FILES['image']['tmp_name']; 
$fileSize = $_FILES['image']['size']; 
$fileError = $_FILES['image']['error']; 
$fileType = $_FILES['image']['type']; 
//Splitting the filename on the extension 
$fileExt= explode ('.', $fileName); 
//Getting the extension from the file and tolower so we can find out if it is an allowed file type 
$fileActualExt = strtolower(end($fileExt)); 
//File types that we are going to allow 
$allowed = array('jpg','jpeg','png'); 

if(in_array($fileActualExt, $allowed)){ 
    if($fileError === 0){ 
     $fileNameNew = uniqid('', true).".".$fileActualExt; 

     $fileDestination = '/assets/images/'.$fileName; //PROBLEM?? 

     move_uploaded_file($FileTmpName, $fileDestination); 
     echo"Done?"; 
    }else{ 
     echo "There was an error?"; 
    }} 
    else { 
    echo "You cannot upload files of this type"; 
}} 
+0

시도해보십시오. $ fileDestination = './assets/images/'.$fileName; –

+0

이것이 구문 오류인지 아니면 아키텍처에 대한 개념적 질문인지에 대해 자세히 설명해 드리겠습니다. 버그를 수정하거나 다른 것을 해결하기 위해 사용을 요구하는지 여부는 분명하지 않습니다. – Matt

+0

파일 경로는 정적 서버의 공개/개인 엔드 포인트를 나타내야합니다. 이러한 이미지가 모델 (사용자, 회사, 제품, 리뷰 등)의 일부 컨텍스트에만 해당되는 경우 모델의 정보에서'filepath'를 다시 생성 할 수 있도록 명명 패턴의 일부 양식을 작성합니다. 예를 들어, Review of a Cafe의 이미지를 저장했다면 서버에 저장된 경로는'/ images/review/: reviewId/: uuid.jpeg' 일 수 있습니다. 여기서': reviewId'는 Review Model에서 가져온 것이고 : uuid는 업로드 할 때 생성되며 모든 것이 고유 한 리뷰로 사진을 선택할 수 있습니다. – Matt

답변

0

PHP에 해당 디렉토리에 쓰기 권한이 있습니까?

move_uploaded_file()에서 오류를 확인하지 않고 "완료?"라는 메시지가 표시됩니다.

이미지 디렉토리에 대한 사용 권한을 확인한 다음 파일이 이동되었는지 확인하십시오.

if(move_uploaded_file($FileTmpName, $fileDestination)){ 
    //File was moved 
}else{ 
    //Error 
} 
또한

, 도움이

$fileDestination = 'assets/images/'.$fileNameNew; //PROBLEM?? 

희망에

$fileDestination = '/assets/images/'.$fileName; //PROBLEM?? 

변경해보십시오!

0

사용하는 경로가 잘못되었습니다. 전체 경로 또는 실행중인 파일의 위치에 상대적인 경로가 필요합니다. 전체 경로 중 하나

$fileDestination = getcwd().'/assets/images/'.$fileName; 

을 시도하거나 현재 디렉토리에 상대적인 경로 단지

$fileDestination = './assets/images/'.$fileName; 

. 여기서는 실행중인 파일이 assets 폴더가있는 동일한 디렉토리에 있다고 가정합니다.