여러 파일을 업로드하고 폴더에 저장하고 경로를 가져 와서 데이터베이스에 저장하고 싶습니다. 여러 파일 업로드를 위해 찾은 좋은 예 ...
참고 : 파일은 모든 유형이 될 수 있습니다.
여러 파일을 업로드하고 폴더에 저장하고 경로를 가져 와서 데이터베이스에 저장하고 싶습니다. 여러 파일 업로드를 위해 찾은 좋은 예 ...
참고 : 파일은 모든 유형이 될 수 있습니다.
답변:
나는 이것이 오래된 게시물이라는 것을 알고 있지만 몇 가지 추가 설명은 여러 파일을 업로드하려는 사람에게 유용 할 수 있습니다. 다음은 수행해야 할 작업입니다.
name="inputName[]"
multiple="multiple"
하거나multiple
"$_FILES['inputName']['param'][index]"
array_filter()
계산하기 전에 사용하십시오 .다음은 다운되고 더러운 예제입니다 (관련 코드 만 표시).
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
}
}
}
이것이 도움이되기를 바랍니다!
<input type="file">
속성을 허용 하는지 잘 모르겠습니다 multiple
. 예상되는 결과는 무엇입니까? 여러 파일을 선택할 수있는 브라우저?
multiple
입력 요소 의 속성은 부울이므로 값을 제공하지 않음을 의미합니다 <input name="upload[]" type="file" multiple />
. HTML5 사양 참조 : w3.org/TR/2011/WD-html5-20110525/…
여러 파일을 선택한 다음 업로드를 수행
<input type='file' name='file[]' multiple>
하는 샘플 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]
두 번째 파일의 이름을 저장합니다.
등등.
HTML
로 div 생성 id='dvFile'
;
만들기 button
;
onclick
그 버튼 호출 기능의 add_more()
자바 스크립트
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 스크립트를 통해 처리 할 수 있습니다.
fileInput.value
있지만 여러 파일을 선택하면 fileInput.value
여전히 하나의 경로 만 출력됩니다.
하나의 파일을 업로드하는 것과 다르지 않습니다. $_FILES
. 업로드 된 모든 파일을 포함하는 배열입니다.
PHP 매뉴얼에 다음 장이 있습니다 : 여러 파일 업로드
사용자 측에서 쉽게 선택하여 여러 파일 업로드를 활성화하려면 (업로드 필드를 채우는 대신 한 번에 여러 파일 선택) SWFUpload를 살펴보십시오 . 그러나 일반 파일 업로드 양식과는 다르게 작동하며 작동하려면 Flash가 필요합니다. SWFUpload는 Flash와 함께 사용되지 않습니다. 현재 올바른 접근 방식에 대한 다른 최신 답변을 확인하십시오.
<!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>
간단합니다. 먼저 파일 배열을 계산 한 다음 while 루프에서 다음과 같이 쉽게 수행 할 수 있습니다.
$count = count($_FILES{'item_file']['name']);
이제 총 파일 수가 맞습니다.
while 루프에서 다음과 같이하십시오.
$i = 0;
while($i<$count)
{
Upload one by one like we do normally
$i++;
}
이 간단한 스크립트가 저에게 효과적이었습니다.
<?php
foreach($_FILES as $file){
//echo $file['name'];
echo $file['tmp_name'].'</br>';
move_uploaded_file($file['tmp_name'], "./uploads/".$file["name"]);
}
?>
오류 요소로 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";
}
}
다음 솔루션을 발견했습니다.
http://www.mydailyhacks.org/2014/11/05/php-multifile-uploader-for-php-5-4-5-5/
여러 입력과 AJAX 진행률 표시 줄을 추가 할 수있는 양식이있는 준비된 PHP 다중 파일 업로드 스크립트입니다. 서버에서 포장을 풀면 바로 작동합니다.
아래 스크립트를 사용하면 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/>';
}
}
}
?>
$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]);
}
}
이것이 나를 위해 일한 것입니다. 파일을 업로드하고 파일 이름을 저장해야했고 여러 파일 이름 당 하나의 레코드를 저장할 입력 필드에서 추가 inof가있었습니다. serialize ()를 사용한 다음 기본 SQL 쿼리에 추가했습니다.
class addReminder extends dbconn {
public function addNewReminder(){
$this->exdate = $_POST['exdate'];
$this->name = $_POST['name'];
$this->category = $_POST['category'];
$this->location = $_POST['location'];
$this->notes = $_POST['notes'];
try {
if(isset($_POST['submit'])){
$total = count($_FILES['fileUpload']['tmp_name']);
for($i=0;$i<$total;$i++){
$fileName = $_FILES['fileUpload']['name'][$i];
$ext = pathinfo($fileName, PATHINFO_EXTENSION);
$newFileName = md5(uniqid());
$fileDest = 'filesUploaded/'.$newFileName.'.'.$ext;
$justFileName = $newFileName.'.'.$ext;
if($ext === 'pdf' || 'jpeg' || 'JPG'){
move_uploaded_file($_FILES['fileUpload']['tmp_name'][$i], $fileDest);
$this->fileName = array($justFileName);
$this->encodedFileNames = serialize($this->fileName);
var_dump($this->encodedFileNames);
}else{
echo $fileName . ' Could not be uploaded. Pdfs and jpegs only please';
}
}
$sql = "INSERT INTO reminders (exdate, name, category, location, fileUpload, notes) VALUES (:exdate,:name,:category,:location,:fileName,:notes)";
$stmt = $this->connect()->prepare($sql);
$stmt->bindParam(':exdate', $this->exdate);
$stmt->bindParam(':name', $this->name);
$stmt->bindParam(':category', $this->category);
$stmt->bindParam(':location', $this->location);
$stmt->bindParam(':fileName', $this->encodedFileNames);
$stmt->bindParam(':notes', $this->notes);
$stmt->execute();
}
}catch(PDOException $e){
echo $e->getMessage();
}
}
}
좋은 링크 :
유효성 검사와 함께 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 다중 파일 업로드 소스 코드를 다운로드하려면 여기를 클릭하십시오.
ProgressBar 및 유효성 검사로 PHP / jQuery 여러 파일 업로드 (소스 코드를 다운로드하려면 여기를 클릭하십시오)
PHP에서 파일을 업로드하고 MySql 데이터베이스에 저장하는 방법 (소스 코드를 다운로드하려면 여기를 클릭하십시오)