HTTP POST를 사용하여 HTML 및 PHP로 여러 파일을 선택하고 업로드하려면 어떻게합니까?
PHPHTTP POST를 사용하여 HTML 및 PHP로 여러 파일을 선택하고 업로드하려면 어떻게합니까?
필자는 을 사용하여 단일 파일 업로드로이 작업을 수행 한 경험이 있습니다. 그러나 한 번에 둘 이상을 업로드하는 데 문제가 있습니다.
예를 들어 일련의 이미지를 선택한 다음 서버에 업로드 할 수 있습니다.
가능한 경우 단일 파일 입력 컨트롤을 사용하는 것이 좋습니다.
아무도 이것을 수행하는 방법을 알고 있습니까? 감사!
해결법
-
==============================
1.HTML5에서도 가능합니다. 예제 (PHP 5.4) :
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 Manual : 파일 업로드 처리를 참조하십시오.
-
==============================
2.실제로 여러 파일 업로드를 만들기 위해해야 할 일이 있습니다. Java, Ajax, Flash를 사용할 필요가 없습니다. 로 시작하는 정상적인 파일 업로드 양식을 작성하십시오.
실제로 여러 파일 업로드를 만들기 위해해야 할 일이 있습니다. Java, Ajax, Flash를 사용할 필요가 없습니다. 로 시작하는 정상적인 파일 업로드 양식을 작성하십시오.
<form enctype="multipart/form-data" action="post_upload.php" method="POST">
성공의 열쇠.
<입력 유형 = "파일"이름 = "파일 []"다중 />
그 괄호를 잊지 마라! post_upload.php에서 다음을 시도하십시오.
<?php print_r($_FILES['file']['tmp_name']); ?>
tmp_name 데이터가있는 배열을 얻을 수 있습니다. 그러면 'number'라는 파일을 사용하여 세 번째 쌍의 대괄호를 사용하여 각 파일에 액세스 할 수 있습니다.
$_FILES['file']['tmp_name'][0]
PHP count ()를 사용하여 선택된 파일 수를 계산할 수 있습니다. 잘 했어!
-
==============================
3.Firefox 5의 전체 솔루션 :
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 애플릿이나 비슷한 것을 사용해야 할 것입니다 (작은 플래시 파일을 사용하는 파일이 있다고 생각합니다. 찾으면 업데이트 할 것입니다). 현재 단일 파일 입력은 단일 파일의 선택 만 허용합니다.
찾아보기를 선택할 때 표시되는 파일 선택자 대화 상자에서 여러 파일을 선택하려면 대부분 운이 좋지 않습니다. 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/>'; } ?>
쉬운 ... 마무리
-
==============================
6.여러 입력 필드를 사용하는 경우 name = "file []"(또는 다른 이름)을 설정할 수 있습니다. 그것들을 배열에 넣으면 $ _FILES [ 'file'] = 배열 ({file_array}, {file_array}))
여러 입력 필드를 사용하는 경우 name = "file []"(또는 다른 이름)을 설정할 수 있습니다. 그것들을 배열에 넣으면 $ _FILES [ 'file'] = 배열 ({file_array}, {file_array}))
-
==============================
7.무료, Uploadify 인 플래시 기반 업 로더가 하나 더 있습니다.
무료, Uploadify 인 플래시 기반 업 로더가 하나 더 있습니다.
Holger - Amidalla 검색 엔진
-
==============================
8.
<form action="" method="POST" enctype="multipart/form-data"> Select image to upload: <input type="file" name="file[]" multiple/> <input type="submit" name="submit" value="Upload Image" /> </form>
FOR 루프 사용하기
<?php $file_dir = "uploads"; if (isset($_POST["submit"])) { for ($x = 0; $x < count($_FILES['file']['name']); $x++) { $file_name = $_FILES['file']['name'][$x]; $file_tmp = $_FILES['file']['tmp_name'][$x]; /* location file save */ $file_target = $file_dir . DIRECTORY_SEPARATOR . $file_name; /* DIRECTORY_SEPARATOR = / or \ */ if (move_uploaded_file($file_tmp, $file_target)) { echo "{$file_name} has been uploaded. <br />"; } else { echo "Sorry, there was an error uploading {$file_name}."; } } } ?>
FOREACH 루프 사용
<?php $file_dir = "uploads"; if (isset($_POST["submit"])) { foreach ($_FILES['file']['name'] as $key => $value) { $file_name = $_FILES['file']['name'][$key]; $file_tmp = $_FILES['file']['tmp_name'][$key]; /* location file save */ $file_target = $file_dir . DIRECTORY_SEPARATOR . $file_name; /* DIRECTORY_SEPARATOR = / or \ */ if (move_uploaded_file($file_tmp, $file_target)) { echo "{$file_name} has been uploaded. <br />"; } else { echo "Sorry, there was an error uploading {$file_name}."; } } } ?>
-
==============================
9.나는 여러 이미지를 업로드하는 데 사용되는 PHP 함수를 만들었습니다. 이 기능은 특정 폴더에 여러 이미지를 업로드 할 수 있으며 데이터베이스에 레코드를 저장할 수 있습니다. 다음 코드에서 $ arrayimage는 양식을 통해 전송되는 이미지 배열입니다. 업로드를 여러 번 사용할 수는 없지만 버튼 클릭시 파일 unput의 동적 추가 필드를 설정할 수있는 것과 동일한 이름의 다른 입력 필드를 만들어야한다는 점에 유의하십시오.
나는 여러 이미지를 업로드하는 데 사용되는 PHP 함수를 만들었습니다. 이 기능은 특정 폴더에 여러 이미지를 업로드 할 수 있으며 데이터베이스에 레코드를 저장할 수 있습니다. 다음 코드에서 $ arrayimage는 양식을 통해 전송되는 이미지 배열입니다. 업로드를 여러 번 사용할 수는 없지만 버튼 클릭시 파일 unput의 동적 추가 필드를 설정할 수있는 것과 동일한 이름의 다른 입력 필드를 만들어야한다는 점에 유의하십시오.
$ dir은 이미지를 저장하려는 디렉토리입니다 $ fields는 데이터베이스에 저장하려는 필드의 이름입니다.
데이터베이스 필드는 배열 형식이어야합니다. 예 데이터베이스 imagestore 및 ID, 이름, 주소와 같은 필드 이름이 있으면 다음과 같은 데이터를 게시해야합니다.
$fields=array("id"=$_POST['idfieldname'], "name"=$_POST['namefield'],"address"=$_POST['addressfield']);
그 필드를 function $ fields로 넘겨 준다.
$ table은 데이터를 저장하려는 테이블의 이름입니다.
function multipleImageUpload($arrayimage,$dir,$fields,$table) { //extracting extension of uploaded file $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $arrayimage["name"]); $extension = end($temp); //validating image if ((($arrayimage["type"] == "image/gif") || ($arrayimage["type"] == "image/jpeg") || ($arrayimage["type"] == "image/jpg") || ($arrayimage["type"] == "image/pjpeg") || ($arrayimage["type"] == "image/x-png") || ($arrayimage["type"] == "image/png")) //check image size && ($arrayimage["size"] < 20000000) //check iamge extension in above created extension array && in_array($extension, $allowedExts)) { if ($arrayimage["error"] > 0) { echo "Error: " . $arrayimage["error"] . "<br>"; } else { echo "Upload: " . $arrayimage["name"] . "<br>"; echo "Type: " . $arrayimage["type"] . "<br>"; echo "Size: " . ($arrayimage["size"] / 1024) . " kB<br>"; echo "Stored in: ".$arrayimage['tmp_name']."<br>"; //check if file is exist in folder of not if (file_exists($dir."/".$arrayimage["name"])) { echo $arrayimage['name'] . " already exists. "; } else { //extracting database fields and value foreach($fields as $key=>$val) { $f[]=$key; $v[]=$val; $fi=implode(",",$f); $value=implode("','",$v); } //dynamic sql for inserting data into any table $sql="INSERT INTO " . $table ."(".$fi.") VALUES ('".$value."')"; //echo $sql; $imginsquery=mysql_query($sql); move_uploaded_file($arrayimage["tmp_name"],$dir."/".$arrayimage['name']); echo "<br> Stored in: " .$dir ."/ Folder <br>"; } } } //if file not match with extension else { echo "Invalid file"; } } //function imageUpload ends here }
// imageFunctions 클래스는 여기서 끝납니다.
당신은이 코드를 사용하여 확장 된 이미지를 여러 개 삽입 할 수 있습니다.이 함수는 이미지 파일을 검사하기 위해 만들어지며, 코드에서 범용 파일의 확장 목록을 바꿀 수 있습니다
-
==============================
10.부분 답변 : pear HTTP_UPLOAD가 유용 할 수 있습니다. http://pear.php.net/manual/en/package.http.http-upload.examples.php
부분 답변 : pear HTTP_UPLOAD가 유용 할 수 있습니다. http://pear.php.net/manual/en/package.http.http-upload.examples.php
여러 파일에 대한 완전한 예제가 있습니다.
from https://stackoverflow.com/questions/1175347/how-can-i-select-and-upload-multiple-files-with-html-and-php-using-http-post by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP : mysql_real_escape_string은 사용자 입력을 청소하기에 충분합니까? (0) | 2018.09.13 |
---|---|
PHP에서 디렉토리와 그 전체 내용 (파일 + 하위 디렉토리)을 재귀 적으로 삭제하는 방법은 무엇입니까? (0) | 2018.09.13 |
PHP는 연령 계산 (0) | 2018.09.13 |
URL 쿼리 문자열 가져 오기 (0) | 2018.09.13 |
$ _SERVER [ 'HTTPS']없이 HTTPS를 사용하는지 확인하는 방법 (1) | 2018.09.13 |