>

<input type="file"> 를 사용한 단일 파일 업로드로이 작업을 수행 한 경험이 있습니다 . 그러나 한 번에 둘 이상을 업로드하는 데 문제가 있습니다.

예를 들어 일련의 이미지를 선택한 다음 한 번에 서버에 업로드하고 싶습니다.

가능한 경우 단일 파일 입력 컨트롤을 사용하는 것이 좋습니다.

이 작업을 수행하는 방법을 아는 사람이 있습니까? 감사합니다!


  • 답변 # 1

    HTML5에서 가능합니다. 예 (PHP 5.4) :

    <!doctype html>
    <html>
        <head>
            <title>Test</title>
        </head>
        <body>
            <form method="post" enctype="multipart/form-data">
                <input type="file" name="my_file[]" multiple>
                <input type="submit" value="Upload">
            </form>
            <?php
                if (isset($_FILES['my_file'])) {
                    $myFile = $_FILES['my_file'];
                    $fileCount = count($myFile["name"]);
                    for ($i = 0; $i < $fileCount; $i++) {
                        ?>
                            <p>File #<?= $i+1 ?>:</p>
                            <p>
                                Name: <?= $myFile["name"][$i] ?><br>
                                Temporary file: <?= $myFile["tmp_name"][$i] ?><br>
                                Type: <?= $myFile["type"][$i] ?><br>
                                Size: <?= $myFile["size"][$i] ?><br>
                                Error: <?= $myFile["error"][$i] ?><br>
                            </p>
                        <?php
                    }
                }
            ?>
        </body>
    </html>
    
    

    파일 대화 상자에서 2 개의 항목을 선택한 후 Chrome에서 다음과 같이 표시됩니다.

    다음은 "업로드"버튼을 클릭 한 후의 모습입니다.

    이것은 완전히 작동하는 답변의 스케치 일뿐입니다. PHP에서 파일 업로드를 적절하고 안전하게 처리하는 방법에 대한 자세한 내용은 PHP 설명서 : 파일 업로드 처리를 참조하십시오.

  • 답변 # 2

    여러 파일 업로드를 만들려면 몇 가지해야 할 것이 있습니다. Java, Ajax, Flash를 사용할 필요가 없습니다. 다음으로 시작하는 일반 파일 업로드 양식을 작성하십시오.

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

    그러면 성공의 열쇠입니다.

    <input type="file" name="file[]" multiple />  

    대괄호를 잊지 마십시오! post_upload.php에서 다음을 시도하십시오 :

    <?php print_r($_FILES['file']['tmp_name']); ?>
    
    

    tmp_name 데이터가있는 배열을 얻습니다. 즉, 'number'예를 사용하여 세 번째 괄호 쌍으로 각 파일에 액세스 할 수 있습니다.

    $_FILES['file']['tmp_name'][0]
    
    

    php count ()를 사용하여 선택된 파일 수를 계산할 수 있습니다. 행운을 빕니다!

  • 답변 # 3

    Firefox 5의 전체 솔루션 :

    <html>
    <head>
    </head>
    <body>
     <form name="uploader" id="uploader" action="multifile.php" method="POST" enctype="multipart/form-data" >
      <input id="infile" name="infile[]" type="file" onBlur="submit();" multiple="true" ></input> 
     </form>
    <?php
    echo "No. files uploaded : ".count($_FILES['infile']['name'])."<br>"; 
    
    $uploadDir = "images/";
    for ($i = 0; $i < count($_FILES['infile']['name']); $i++) {
     echo "File names : ".$_FILES['infile']['name'][$i]."<br>";
     $ext = substr(strrchr($_FILES['infile']['name'][$i], "."), 1); 
     // generate a random new file name to avoid name conflict
     $fPath = md5(rand() * time()) . ".$ext";
     echo "File paths : ".$_FILES['infile']['tmp_name'][$i]."<br>";
     $result = move_uploaded_file($_FILES['infile']['tmp_name'][$i], $uploadDir . $fPath);
     if (strlen($ext) > 0){
      echo "Uploaded ". $fPath ." succefully. <br>";
     }
    }
    echo "Upload complete.<br>";
    ?>
    </body>
    </html>
    
    

  • 답변 # 4

    찾아보기를 선택할 때 표시되는 파일 선택기 대화 상자에서 여러 파일을 선택하려면 대부분 운이 좋지 않습니다. Java 애플릿 또는 이와 유사한 것을 사용해야합니다 (작은 플래시 파일을 사용하는 파일이 있다고 생각합니다. 찾으면 업데이트합니다). 현재 단일 파일 입력은 단일 파일 만 선택할 수 있습니다.

    여러 개의 파일 입력을 사용하는 것에 대해 이야기하는 경우 하나를 사용하는 것과 크게 다르지 않습니다. 코드를 게시하면 더 도와 드리겠습니다.

    <시간>

    업데이트 : 플래시를 사용하는 단일 '찾아보기'버튼을 사용하는 한 가지 방법이 있습니다. 나는 이것을 개인적으로 사용한 적이 없지만 그것에 대해 상당한 금액을 읽었습니다. 가장 좋은 기회라고 생각합니다.

    http://swfupload.org/

  • 답변 # 5

    처음에는 다음과 같이 양식을 작성해야합니다.

    <form method="post" enctype="multipart/form-data" >
       <input type="file" name="file[]" multiple id="file"/>
       <input type="submit" name="ok"  />
    </form>
    
    

    맞습니다. 이제이 코드를 양식 코드 또는 원하는 페이지에 추가하십시오

    <?php
    if(isset($_POST['ok']))
       foreach ($_FILES['file']['name'] as $filename) {
        echo $filename.'<br/>';
    }
    ?>
    
    

    쉬운데 ... 마침

관련 자료

  • 이전 java - 정밀도를 잃지 않고 float를 double로 변환
  • 다음 C # ( NET)을 사용하여 프로그래밍 방식으로 webconfig 변경