복붙노트

PHP에서 여러 파일 업로드

카테고리 없음

PHP에서 여러 파일 업로드

여러 개의 파일을 업로드하고 폴더에 저장하고 경로를 가져 와서 데이터베이스에 저장하고 싶습니다 ... 여러 파일 업로드를 수행 한 것으로 보이는 좋은 예 ...

참고 사항 : 파일 형식은 다양 할 수 있습니다 ...

해결법

  1. ==============================

    1.

    이 게시물은 오래된 게시물이지만 몇 가지 추가 설명은 여러 파일을 업로드하려고하는 사용자에게 유용 할 수 있습니다. 다음은 수행해야 할 작업입니다.

    아래에 더러운 예제가 있습니다 (관련 코드 만 표시).

    HTML :

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

    PHP :

    //$files = array_filter($_FILES['upload']['name']); //something like that to be used before processing files.
    
    // Count # of uploaded files in array
    $total = count($_FILES['upload']['name']);
    
    // Loop through each file
    for( $i=0 ; $i < $total ; $i++ ) {
    
      //Get the temp file path
      $tmpFilePath = $_FILES['upload']['tmp_name'][$i];
    
      //Make sure we have a file path
      if ($tmpFilePath != ""){
        //Setup our new file path
        $newFilePath = "./uploadFiles/" . $_FILES['upload']['name'][$i];
    
        //Upload the file into the temp dir
        if(move_uploaded_file($tmpFilePath, $newFilePath)) {
    
          //Handle other code here
    
        }
      }
    }
    

    희망이 도움이!

  2. ==============================

    2.

    여러 파일을 선택하고를 사용하여 업로드 할 수 있습니다. <입력 유형 = '파일'이름 = '파일 []'다중> 업로드를 수행하는 샘플 PHP 스크립트 :

    <html>
    <title>Upload</title>
    <?php
        session_start();
        $target=$_POST['directory'];
            if($target[strlen($target)-1]!='/')
                    $target=$target.'/';
                $count=0;
                foreach ($_FILES['file']['name'] as $filename) 
                {
                    $temp=$target;
                    $tmp=$_FILES['file']['tmp_name'][$count];
                    $count=$count + 1;
                    $temp=$temp.basename($filename);
                    move_uploaded_file($tmp,$temp);
                    $temp='';
                    $tmp='';
                }
        header("location:../../views/upload.php");
    ?>
    </html>
    

    선택한 파일은 다음과 같은 배열로 수신됩니다.

    $ _FILES [ 'file'] [ 'name'] [0] 첫 번째 파일의 이름을 저장합니다. $ _FILES [ 'file'] [ 'name'] [1] 두 번째 파일의 이름을 저장합니다. 등등.

  3. ==============================

    3.

    HTML

    자바 스크립트

    function  add_more() {
      var txt = "<br><input type=\"file\" name=\"item_file[]\">";
      document.getElementById("dvFile").innerHTML += txt;
    }
    

    PHP

    if(count($_FILES["item_file"]['name'])>0)
     { 
    //check if any file uploaded
     $GLOBALS['msg'] = ""; //initiate the global message
      for($j=0; $j < count($_FILES["item_file"]['name']); $j++)
     { //loop the uploaded file array
       $filen = $_FILES["item_file"]['name']["$j"]; //file name
       $path = 'uploads/'.$filen; //generate the destination path
       if(move_uploaded_file($_FILES["item_file"]['tmp_name']["$j"],$path)) 
    {
       //upload the file
        $GLOBALS['msg'] .= "File# ".($j+1)." ($filen) uploaded successfully<br>";
        //Success message
       }
      }
     }
     else {
      $GLOBALS['msg'] = "No files found to upload"; //No file upload message 
    }
    

    이 방법으로 파일 / 이미지를 필요한만큼 추가하고 PHP 스크립트를 통해 처리 할 수 ​​있습니다.

  4. ==============================

    4.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
    
    <body>
    <?php
    $max_no_img=4; // Maximum number of images value to be set here
    
    echo "<form method=post action='' enctype='multipart/form-data'>";
    echo "<table border='0' width='400' cellspacing='0' cellpadding='0' align=center>";
    for($i=1; $i<=$max_no_img; $i++){
    echo "<tr><td>Images $i</td><td>
    <input type=file name='images[]' class='bginput'></td></tr>";
    }
    
    echo "<tr><td colspan=2 align=center><input type=submit value='Add Image'></td></tr>";
    echo "</form> </table>";
    while(list($key,$value) = each($_FILES['images']['name']))
    {
        //echo $key;
        //echo "<br>";
        //echo $value;
        //echo "<br>";
    if(!empty($value)){   // this will check if any blank field is entered
    $filename =rand(1,100000).$value;    // filename stores the value
    
    $filename=str_replace(" ","_",$filename);// Add _ inplace of blank space in file name, you can remove this line
    
    $add = "upload/$filename";   // upload directory path is set
    //echo $_FILES['images']['type'][$key];     // uncomment this line if you want to display the file type
    //echo "<br>";                             // Display a line break
    copy($_FILES['images']['tmp_name'][$key], $add); 
    echo $add;
        //  upload the file to the server
    chmod("$add",0777);                 // set permission to the file.
    }
    }
    ?>
    </body>
    </html>
    
  5. ==============================

    5.

    간단합니다. 그냥 파일 배열을 먼저 계산하고 while 루프에서 다음과 같이 쉽게 할 수 있습니다.

    $count = count($_FILES{'item_file']['name']);
    

    지금 당신은 총 파일 수를 얻었습니다.

    while 루프는 다음과 같이합니다.

    $i = 0;
    while($i<$count)
    {
        Upload one by one like we do normally
        $i++;
    }
    
  6. ==============================

    6.

    그것은 하나의 파일을 업로드하는 것과 다르지 않습니다. - $ _FILES는 업로드 된 모든 파일을 포함하는 배열입니다.

    PHP 매뉴얼에는 여러개의 파일 업로드 장이있다.

    업로드 필드를 작성하는 대신 여러 파일을 한꺼번에 선택하여 사용자가 쉽게 선택할 수있는 여러 파일 업로드를 사용하려는 경우 SWFUpload를 살펴보십시오. 그것은 정상적인 파일 업로드 양식과는 다르게 작동하며 Flash가 작동해야합니다. SWFUpload는 Flash와 함께 폐기되었습니다. 지금 올바른 접근법에 대한 다른 새로운 대답을 확인하십시오.

  7. ==============================

    7.

    다음은 내가 이해할 수있는 $ _FILES 배열을 반환하는 함수이다.

    function getMultiple_FILES() {
        $_FILE = array();
        foreach($_FILES as $name => $file) {
            foreach($file as $property => $keys) {
                foreach($keys as $key => $value) {
                    $_FILE[$name][$key][$property] = $value;
                }
            }
        }
        return $_FILE;
    }
    
  8. ==============================

    8.

    이 간단한 스크립트는 나를 위해 일했습니다.

    <?php
    
    foreach($_FILES as $file){
      //echo $file['name']; 
      echo $file['tmp_name'].'</br>'; 
      move_uploaded_file($file['tmp_name'], "./uploads/".$file["name"]);
    }
    
    ?>
    
  9. ==============================

    9.

    오류 요소가있는 foreach 루프를 실행합니다.

     foreach($_FILES['userfile']['error'] as $k=>$v)
     {
        $uploadfile = 'uploads/'. basename($_FILES['userfile']['name'][$k]);
        if (move_uploaded_file($_FILES['userfile']['tmp_name'][$k], $uploadfile)) 
        {
            echo "File : ", $_FILES['userfile']['name'][$k] ," is valid, and was                      successfully uploaded.\n";
        }
    
        else 
        {
            echo "Possible file : ", $_FILES['userfile']['name'][$k], " upload attack!\n";
        }   
    
     }
    
  10. ==============================

    10.

    방금 다음 솔루션을 발견했습니다.

    http://www.mydailyhacks.org/2014/11/05/php-multifile-uploader-for-php-5-4-5-5/

    그것은 당신이 여러 입력과 AJAX 진행률 표시 줄을 추가 할 수있는 양식으로 준비 PHP 다중 파일 업로드 스크립트입니다. 그것은 서버에서 풀고 나서 직접 작동해야합니다 ...

  11. ==============================

    11.

    아래 스크립트를 사용하여 PHP를 사용하여 여러 파일을 쉽게 업로드 할 수 있습니다.

    전체 소스 코드 다운로드 및 미리보기

    <?php
    if (isset($_POST['submit'])) {
        $j = 0; //Variable for indexing uploaded image 
    
     $target_path = "uploads/"; //Declaring Path for uploaded images
        for ($i = 0; $i < count($_FILES['file']['name']); $i++) {//loop to get individual element from the array
    
            $validextensions = array("jpeg", "jpg", "png");  //Extensions which are allowed
            $ext = explode('.', basename($_FILES['file']['name'][$i]));//explode file name from dot(.) 
            $file_extension = end($ext); //store extensions in the variable
    
      $target_path = $target_path . md5(uniqid()) . "." . $ext[count($ext) - 1];//set the target path with a new name of image
            $j = $j + 1;//increment the number of uploaded images according to the files in array       
    
       if (($_FILES["file"]["size"][$i] < 100000) //Approx. 100kb files can be uploaded.
                    && in_array($file_extension, $validextensions)) {
                if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) {//if file moved to uploads folder
                    echo $j. ').<span id="noerror">Image uploaded successfully!.</span><br/><br/>';
                } else {//if file was not moved.
                    echo $j. ').<span id="error">please try again!.</span><br/><br/>';
                }
            } else {//if file size and file type was incorrect.
                echo $j. ').<span id="error">***Invalid file Size or Type***</span><br/><br/>';
            }
        }
    }
    ?>
    
  12. ==============================

    12.

    $property_images = $_FILES['property_images']['name'];
        if(!empty($property_images))
        {
            for($up=0;$up<count($property_images);$up++)
            {
                move_uploaded_file($_FILES['property_images']['tmp_name'][$up],'../images/property_images/'.$_FILES['property_images']['name'][$up]);
            }
        }
    
  13. ==============================

    13.

    좋은 링크 :

    다양한 기본 설명을 가진 PHP 단일 파일 업로드.

    유효성 검사와 함께 PHP 파일 업로드

    PHP가 여러 파일을 업로드하여 유효성을 검사하려면 여기를 클릭하십시오. 소스 코드를 다운로드하려면 여기를 클릭하십시오.

    ProgressBar 및 유효성 검사를 통한 PHP / jQuery 다중 파일 업로드 (소스 코드 다운로드는 여기를 클릭하십시오.)

    PHP에서 파일을 업로드하고 MySql 데이터베이스에 저장하는 방법 (소스 코드를 다운로드하려면 여기를 클릭하십시오.)

    extract($_POST);
        $error=array();
        $extension=array("jpeg","jpg","png","gif");
        foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name)
                {
                    $file_name=$_FILES["files"]["name"][$key];
                    $file_tmp=$_FILES["files"]["tmp_name"][$key];
                    $ext=pathinfo($file_name,PATHINFO_EXTENSION);
                    if(in_array($ext,$extension))
                    {
                        if(!file_exists("photo_gallery/".$txtGalleryName."/".$file_name))
                        {
                            move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"photo_gallery/".$txtGalleryName."/".$file_name);
                        }
                        else
                        {
                            $filename=basename($file_name,$ext);
                            $newFileName=$filename.time().".".$ext;
                            move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"photo_gallery/".$txtGalleryName."/".$newFileName);
                        }
                    }
                    else
                    {
                        array_push($error,"$file_name, ");
                    }
                }
    

    HTML 코드를 확인해야합니다.

    <form action="create_photo_gallery.php" method="post" enctype="multipart/form-data">
        <table width="100%">
            <tr>
                <td>Select Photo (one or multiple):</td>
                <td><input type="file" name="files[]" multiple/></td>
            </tr>
            <tr>
                <td colspan="2" align="center">Note: Supported image format: .jpeg, .jpg, .png, .gif</td>
            </tr>
            <tr>
                <td colspan="2" align="center"><input type="submit" value="Create Gallery" id="selectedButton"/></td>
            </tr>
        </table>
    </form>
    

    좋은 링크 :

    다양한 기본 설명을 가진 PHP 단일 파일 업로드.

    유효성 검사와 함께 PHP 파일 업로드

    PHP가 여러 파일을 업로드하여 유효성을 검사하려면 여기를 클릭하십시오. 소스 코드를 다운로드하려면 여기를 클릭하십시오.

    ProgressBar 및 유효성 검사를 통한 PHP / jQuery 다중 파일 업로드 (소스 코드 다운로드는 여기를 클릭하십시오.)

    PHP에서 파일을 업로드하고 MySql 데이터베이스에 저장하는 방법 (소스 코드를 다운로드하려면 여기를 클릭하십시오.)

  14. from https://stackoverflow.com/questions/2704314/multiple-file-upload-in-php by cc-by-sa and MIT lisence