2013-12-09 2 views
0

다음 스크립트는 파일을 성공적으로 업로드하고 파일을 영구 디렉토리로 이동합니다.업로드 된 파일을 임시 디렉토리에서 영구 디렉토리 내의 새로 생성 된 폴더로 이동하는 방법

상위 영구 디렉토리 내에 프로필 ID 이름으로 새 폴더를 만들면 모든 업로드 된 파일이 프로필 이름이있는 폴더 내에있을 수 있고 부모 폴더 내에 새 폴더가 만들어집니다. 폴더.

문제점 : 파일을 이동하면 새로 만든 폴더가 아닌 상위 폴더로 이동됩니다.

PHP 업로드 스크립트.

<?php 
define("UPLOAD_DIR", "images/$Pid"); 
if (!file_exists(UPLOAD_DIR)){ 
    mkdir(UPLOAD_DIR, 0777, true); 
    } 
if (!empty($_FILES["imageUpload"])){ 
    $myFile = $_FILES["imageUpload"]; 

    if ($myFile["error"] !== UPLOAD_ERR_OK) { 
     echo "<p>An error occurred.</p>"; 
     exit; 
    } 
    $name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]); 

    $i = 0; 
    $parts = pathinfo($name); 
    while (file_exists(UPLOAD_DIR . $name)) { 
     $i++; 
     $name = $parts["filename"] . "-" . $i . "." . $parts["extension"]; 
    } 

    $success = move_uploaded_file($myFile["tmp_name"], 
     UPLOAD_DIR . $name); 
    if (!$success) { 
     echo "<p>Unable to save file.</p>"; 
     exit; 
    } else { 
     $imageDir = UPLOAD_DIR .'/'. $_FILES["imageUpload"]["name"]; 
     echo $imageDir; 
    } 
    chmod(UPLOAD_DIR . $name, 0644); 
} 

?> 

감사합니다.

+0

에 나는 유 ("UPLOAD_DIR", "이미지/$ PID"는 이장)이 code.define에 오류가 있다고 생각; this로 변경 ("UPLOAD_DIR", "images /".$ Pid. "/"); – Anish

답변

2

변경

$success = move_uploaded_file($myFile["tmp_name"], 
    UPLOAD_DIR . $name); 

$success = move_uploaded_file($myFile["tmp_name"], 
    UPLOAD_DIR . '/'.$name); 
+1

정말 빨리 발견했습니다. – Relm