PHP에서 여러 파일 업로드

Subodh Poudel 2023년1월30일
  1. multiple태그, 양식의input속성의name태그의 배열 및move_uploaded_file()함수를 사용하여 PHP에서 여러 파일 업로드
  2. PDO를 사용하여 PHP의 데이터베이스에 여러 파일 업로드
PHP에서 여러 파일 업로드

input태그의name속성을 배열로 지정하고multiple속성을 사용하여 PHP에서 여러 파일을 업로드하는 방법을 소개합니다. form태그의enctype속성 값은multipart/form-data입니다. 이 방법은 데이터베이스 연결에mysqli를 사용합니다.

또한 PDO를 사용하여 PHP에서 여러 파일을 업로드하는 또 다른 방법을 소개합니다. 폴더에 파일을 업로드 한 다음 데이터베이스에 업로드합니다. 이 방법은 구현 측면에서 첫 번째 방법과 유사합니다.

multiple태그, 양식의input속성의name태그의 배열 및move_uploaded_file()함수를 사용하여 PHP에서 여러 파일 업로드

input태그의name속성을 배열로 지정하여 여러 파일을 업로드 할 수 있습니다. input태그는 업로드하는 동안 여러 파일을 선택할 수 있도록multiple키워드를 사용합니다. 양식을 제출하는 동안 양식 데이터를 인코딩하는 방법을 지정하기 위해enctype속성에 대한 인코딩multipart/form-data를 작성할 수 있습니다. mysqli를 사용하여 데이터베이스에 연결할 수 있습니다. move_uploaded_file()함수는 업로드 된 파일을 서버의 임시 위치에서 원하는 위치로 이동합니다. INSERT SQL 문을 사용하여 선택한 파일을 데이터베이스에 업로드 할 수 있습니다.

예를 들어,mysqli개체로 데이터베이스 연결을 설정하고 값을$db변수에 할당합니다. POST메소드와 인코딩 유형을multipart/form-data로 사용하여 HTML 양식을 만들어 파일을 업로드합니다. input태그의type속성을file로 지정하고name속성을file로 지정합니다. input태그를 닫기 전에multiple속성을 작성하는 것을 잊지 마십시오. 양식을 제출하려면input태그를 작성하십시오.

isset()함수를 사용하여 양식이 제출되었는지 확인하십시오. count기능을 사용하여 업로드 된 파일 수를 계산합니다. $_FILES['file']['name']count함수에 대한 매개 변수로 사용하여 변수$countfiles에 할당합니다. for 루프를 사용하여 업로드 된 파일을 반복합니다. 루프 내에서$filename변수를 만들고$_FILES['file']['name'][$i]로 할당합니다. 루트 디렉토리에upload라는 폴더를 만듭니다. move_upload_file()함수를 사용하여 파일을 이동하십시오. 임시 이름을 가진 파일 인 첫 번째 매개 변수로$_FILES['file']['tmp_name'][$i]를 사용하십시오. 업로드 된 파일을 저장할 위치와 파일 이름 인 두 번째 매개 변수로'upload/'.$filename을 사용하십시오.

SQL INSERT쿼리를 실행하여 데이터베이스에 파일을 삽입합니다. $filename변수를idname으로 데이터베이스의fileup테이블에 삽입합니다. $db변수를 사용하여$sql변수를 매개 변수로 사용하여query()함수를 호출하여 쿼리를 실행합니다.

예제 코드 :

# php 7.*
<?php
if(isset($_POST['submit'])){
    $countfiles = count($_FILES['file']['name']);
    for($i=0;$i<$countfiles;$i++){
        $filename = $_FILES['file']['name'][$i];
        $sql = "INSERT INTO fileup(id,name) VALUES ('$filename','$filename')";
        $db->query($sql);
        move_uploaded_file($_FILES['file']['tmp_name'][$i],'upload/'.$filename);
    }
}
?>
<form method='post' action='' enctype='multipart/form-data'>
<input type="file" name="file[]" id="file" multiple>
<input type='submit' name='submit' value='Upload'>
</form>
?>

출력:

SELECT * FROM `fileup`
id name 
1 cfc.jpg 
2 hills.jpg

PDO를 사용하여 PHP의 데이터베이스에 여러 파일 업로드

PDO를 사용하여 PHP에서 여러 파일을 업로드 할 수 있습니다. PDO 개체를 사용하여 데이터베이스에 대한 연결을 만들 수 있습니다. 준비된 명령문을 사용하여 파일을 데이터베이스에 삽입합니다. 이 방법은 데이터베이스 연결 측면에서 첫 번째 방법과 만 다릅니다. 이 방법에도 정확한 HTML 형식을 사용할 수 있습니다. 폴더와 데이터베이스에 두 개의 jpg 파일을 업로드하여이 방법을 시연합니다.

예를 들어,new키워드를 사용하여 PDO 데이터베이스 연결을 설정하고$conn변수에 할당합니다. isset()함수를 사용하여 양식이 제출되었는지 확인하십시오. 위와 같이count기능을 사용하여 파일을 계산합니다. 그런 다음$query변수에 쿼리를 작성하여idname을 삽입합니다. 자리 표시 자 작성? 쿼리의 값에 대해 prepare()함수를 사용하여 쿼리를 준비하고$statement변수에 값을 할당합니다. move_uploaded_file()함수를 사용하여 각 파일을uplaod폴더로 이동합니다. execute()함수를 사용하여 쿼리를 실행합니다. 함수의 매개 변수로$filename$target_file이있는 배열을 제공하십시오.

아래 예에서 사용자는 두 개의 jpg 파일을 업로드합니다. 먼저 파일이upload폴더에 업로드 된 다음 데이터베이스에 업로드됩니다. 데이터베이스에는fileup테이블이 있으며idname열이 있습니다. move_uploaded_files()함수에 대한 자세한 내용은 PHP 매뉴얼을 참조하십시오.

예제 코드 :

#php 7.x
<?php
$conn = new PDO("mysql:host=$server;dbname=$dbname","$username","$password");
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
if(isset($_POST['submit'])){
    $countfiles = count($_FILES['file']['name']);
    $query = "INSERT INTO fileup (id, name) VALUES(?,?)";
    $statement = $conn->prepare($query);
    for($i=0;$i<$countfiles;$i++){
        $filename = $_FILES['file']['name'][$i];
        $target_file = 'upload/'.$filename;
        move_uploaded_file($_FILES['file']['tmp_name'][$i],$target_file);
        $statement->execute(array($filename,$target_file));
        }
  }    
?>

출력:

SELECT * FROM `fileup`
id name 
1 upload/cfc.jpg 
2+ upload/count.jpg 
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

관련 문장 - PHP Upload