2014-09-17 2 views
1

저는 file_upload.php와 upload.php로 구성된 파일 업로드 프로그램을 PHP에서 만들고자합니다. 문제는 사용자가 로그인하여 파일을 업로드 한 후 파일 대신 배열 또는 파일 경로가 표시되는 것입니다.파일이 PHP 디렉토리에 업로드되지 않습니다.

mkdir($full_path, 0700); 
echo($full_path, 0700); 

그러나 대신 다음 밖으로 인쇄 것 :

/home/ajhausdorf/uploading//Argentina.docx/home/ajhausdorf을 선은 아래의 다음 페이지에 파일을 에코 디렉토리 경로를 만들어야합니다 /uploading//Argentina.docxnouploaded/tmp/phpcLfB0Y

경로가 아닌 디렉터리에서 파일을 표시하려면 어떻게해야합니까?

file_upload.php

<?php 
     session_start(); 
     $username = $_SESSION['username']; 
     echo $_SESSION['username']; 
?> 

<?php 

    // view the files uploaded to the user's directory 
     $user_path = sprintf("/home/ajhausdorf/uploading/%s", $userName); 
      $files=scandir($user_path); 
?> 

<?php 
     session_start(); 

     // Get the filename and make sure it is valid 
     $filename = basename($_FILES['uploadedfile']['name']); 
     if(!preg_match('/^[\w_\.\-]+$/', $filename)){ 
      echo "Invalid filename"; 
      exit(); 
     } 

     // Get the username and make sure it is valid 
     $username = $_SESSION['username']; 
     if(!preg_match('/^[\w_\-]+$/', $username)){ 
      echo "Invalid username"; 
      exit(); 
     } 

     $full_path = sprintf("/home/ajhausdorf/uploading/%s/%s", $username, $filename); 
     $dir = sprintf("/home/ajhausdorf/uploading/%s", $username); 
     $user_path = sprintf("/home/ajhausdorf/uploading/%s", $userName); 
      $view = scandir($user_path, 1); 
       mkdir($full_path); 
       echo ($full_path); 

      if (file_exists($dir)) { 
       mkdir($full_path, 0700); 
       move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $full_path); 

      } else { 
       mkdir($full_path, 0700); 
       echo($full_path); 
       move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $full_path); 
       echo "no"; 
      } 

      if(file_exists($_FILES['uploadedfile']['tmp_name']) || is_uploaded_file($_FILES['uploadedfile']['tmp_name'])) { 
       echo "uploaded"; 
      } 

      echo $_FILES['uploadedfile']['tmp_name']; 
      print_r($view); 

?> 

답변

1

는 이러한 목표를 달성하기 위해 많은 방법이 있습니다 upload.php로; 쉬운 방법은 foreach 루프를 사용하여 파일 이름 만 출력하는 것입니다.

fileupload.php

$user_path = sprintf("/home/ajhausdorf/uploading/%s", $userName); 
$files=scandir($user_path); 

foreach($files as $file) { 
    if($file == "." || $file == "..") { 
     continue; 
    } 
    echo $file; 
} 
관련 문제