2014-12-30 3 views
0

파일을 업로드하기 전에 사용자 (관리자)가 선택할 수있는 대상 위치에 파일을 업로드하는 쉬운 방법을 알고 싶습니다. 서버에서 특정 대상 위치를 선택하는 데 사용할 대화 상자 나 선택 방법은 무엇입니까? 루트 디렉토리가 있습니다.동적으로 선택된 디렉토리에 pdf 파일을 업로드 할 아이디어가 필요합니다.

루트 디렉토리에는 2011201220132014라는 폴더가 있습니다.

각 디렉토리에는 몇 개의 디렉토리가 있습니다.

그래서 수동으로 하나의 디렉토리를 선택하고 그 디렉토리에 파일을 업로드하고 싶습니다. 미리 정의 된 디렉토리에 파일을 업로드하기위한 PHP 코드를 알고있었습니다. 이제 그 목적을 위해 코드를 변경하고 싶습니다.

내가 사용하는 코드입니다 : 을 그리고 이것은 내가 사용하는 코드 예제입니다

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" /> 
Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
<input type="submit" value="Upload File" /> 
</form> 

와 PHP 코드가

<?php 
     $ndir = $_GET['file']; 
     echo $ndir; 

     $target_path = "uploads/"; 
     $target_path = $target_path . basename($_FILES['uploadedfile']['name']); 
     // Check if file already exists 
     if (file_exists($target_path)) { 
      echo "Sorry, file already exists."; 
      } 
     else if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
     echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded"; 
     } 
     else{ 
     echo "There was an error uploading the file, please try again!"; 
     } 
     ?> 

감사

+2

글쎄, 여기에있는 질문은 무엇입니까? 파일을 업로드하는 POST 요청 내에 "foldername"값을 지정합니다. 어쨌든 임시 업로드 폴더에서 파일을 이동해야하므로 추가 값을 고려하여 파일을 저장할 최종 폴더를 결정할 수도 있습니다. – arkascha

+0

내가 묻는 것은 다른 PDF 파일을 여러 다른 디렉토리에 업로드해야한다는 것입니다. 그 목적을 위해 파일을 업로드 할 적절한 디렉토리를 선택하고 싶습니다. 그래서 대상 위치를 선택하려면 GUI 기반 선택 패널을 찾고 있는데요. 내가 사용할 수있는 방법은 무엇입니까 ?? –

+0

@Eeji 방금 아이디어가 필요했습니다. 그게 내가 물었던거야. 필자가 작성한 코드를 제공했습니다. 내 목적을 위해 그 코드를 확장하고 싶었다 –

답변

3

내가 가진 이후입니다 몇 분 남았습니다 :

폴더 이름으로 설정된 값으로 이름 속성을 설정하는 동안 드롭 다운 메뉴 선택을 사용할 수 있습니다.

<select name="destination"> 
    <option value="folder_1">Folder 1</option> 
    <option value="folder_2">Folder 2</option> 
    <option value="folder_3">Folder 3</option> 
</select> 

그런 다음 업로드/대상 경로 변수에 폴더 대상을 연결 : 일의

if(isset($_POST['destination'])){ 
    $target_path = "uploads/"; 
    $target_folder = $_POST['destination']; 
    $target_path = $target_path . $target_folder . "/" . basename($_FILES['uploadedfile']['name']); 
} 
  • 유형.

편집

이 주어진 시작 경로에서 시작하여 전체 하위 폴더를 검색합니다.

참고 : 업로드 부분은 나머지 부분을 작성해야합니다.

<form enctype="multipart/form-data" action="" method="POST"> 

    <select name="destination"> 

<?php 
/* ============== PATH NOTES ============== */ 
// Either use full path. Keep the trailing slash 
// $yourStartingPath = "/var/user/you/httpdocs/uploads/"; 

// or use current folder from script's execution 
$yourStartingPath = "./"; 

$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($yourStartingPath, RecursiveDirectoryIterator::SKIP_DOTS), 
    RecursiveIteratorIterator::SELF_FIRST, 
    RecursiveIteratorIterator::CATCH_GET_CHILD 
); 

foreach($iterator as $file) { 
    if($file->isDir()) { 

     echo '<option value="'.$file->getRealPath().'">' . $file->getFilename().'</option>'; 

    } 
} 

echo "</select>"; 

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

     $target_folder = $_POST['destination']; 
     $target_path = $target_folder . "/" . basename($_FILES['uploadedfile']['name']); 

    } 

echo "<br>"; 
/* You can comment out the echo $target_path; */ 
/* It's just for testing purposes to show you the folder */ 
echo $target_path; 
echo "<br>"; 

?> 

<input type="submit" value="Upload File" /> 
</form> 
+0

예. 이건 괜찮아 . 나는 또한이 방법을 생각했다. 그러나 여기서 문제는이 디렉토리 (하위 디렉토리)에 하위 디렉토리가있는 경우 경로를 변경해야한다는 것입니다. 즉, $ target_folder 변수를 연결해야합니다. 세션 변수를 정적 변수로 사용하려고했습니다. 그러나 잘 작동하지 않습니다. 세션 변수를 사용하지 않고 제안 할 수있는 방법은 무엇입니까? –

+0

@RajpirathapSakthithasan 내 대답을 다시로드하고 ** 편집 ** 하단의 하단을보십시오. –

+1

-ii 중요한 도움을 주셔서 감사합니다. 정확히 내가 필요한 걸 주셨다. 참으로. –

관련 문제