Saya ingin mengunggah banyak file dan menyimpannya dalam folder dan mendapatkan jalur dan menyimpannya di database ... Contoh bagus apa pun yang Anda cari untuk melakukan unggahan banyak file ...
Catatan: File bisa dari jenis apa saja ...
Saya ingin mengunggah banyak file dan menyimpannya dalam folder dan mendapatkan jalur dan menyimpannya di database ... Contoh bagus apa pun yang Anda cari untuk melakukan unggahan banyak file ...
Catatan: File bisa dari jenis apa saja ...
Jawaban:
Saya tahu ini adalah posting lama tetapi beberapa penjelasan lebih lanjut mungkin berguna bagi seseorang yang mencoba mengunggah banyak file ... Inilah yang perlu Anda lakukan:
name="inputName[]"
multiple="multiple"
atau hanyamultiple
"$_FILES['inputName']['param'][index]"
array_filter()
sebelum menghitung.Ini adalah contoh yang buruk (hanya menampilkan kode yang relevan)
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
}
}
}
Semoga ini bisa membantu!
<input type="file">
mengizinkan atribut multiple
- apa hasil yang diharapkan? Browser mengizinkan banyak file untuk dipilih?
multiple
Atribut elemen masukan adalah boolean, artinya Anda tidak memberikan nilai: <input name="upload[]" type="file" multiple />
Lihat spesifikasi HTML5: w3.org/TR/2011/WD-html5-20110525/…
Beberapa file dapat dipilih dan kemudian diunggah menggunakan
<input type='file' name='file[]' multiple>
contoh skrip php yang mengunggah:
<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>
File yang dipilih diterima sebagai array dengan
$_FILES['file']['name'][0]
menyimpan nama file pertama.
$_FILES['file']['name'][1]
menyimpan nama file kedua.
dan seterusnya.
HTML
buat div dengan id='dvFile'
;
buat a button
;
onclick
fungsi panggilan tombol itu add_more()
JavaScript
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
}
Dengan cara ini Anda dapat menambahkan file / gambar sebanyak yang dibutuhkan, dan menanganinya melalui script php.
fileInput.value
, tetapi saya perhatikan bahwa ketika beberapa file dipilih fileInput.value
masih hanya mengeluarkan satu jalur ...
Ini tidak jauh berbeda dengan mengunggah satu file - $_FILES
adalah larik yang berisi semua dan semua file yang diunggah.
Ada satu bab dalam manual PHP: Mengupload banyak file
Jika Anda ingin mengaktifkan beberapa file upload dengan pilihan yang mudah di pihak pengguna (memilih beberapa file sekaligus daripada mengisi kolom upload) lihat SWFUpload . Ini bekerja secara berbeda dari formulir unggahan file normal dan membutuhkan Flash untuk bekerja. SWFUpload sudah usang bersama dengan Flash. Periksa jawaban lain yang lebih baru untuk pendekatan yang sekarang benar.
<!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>
Sederhananya, hitung saja larik file terlebih dahulu, lalu di loop sementara Anda dapat dengan mudah melakukan ini seperti
$count = count($_FILES{'item_file']['name']);
sekarang Anda mendapatkan jumlah file yang benar.
In while loop lakukan seperti ini:
$i = 0;
while($i<$count)
{
Upload one by one like we do normally
$i++;
}
skrip sederhana ini berhasil untuk saya.
<?php
foreach($_FILES as $file){
//echo $file['name'];
echo $file['tmp_name'].'</br>';
move_uploaded_file($file['tmp_name'], "./uploads/".$file["name"]);
}
?>
Berikut adalah fungsi yang saya tulis yang mengembalikan $_FILES
array yang lebih bisa dimengerti .
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;
}
Saya menjalankan foreach loop dengan elemen kesalahan, seperti
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";
}
}
Baru saja menemukan solusi berikut:
http://www.mydailyhacks.org/2014/11/05/php-multifile-uploader-for-php-5-4-5-5/
Ini adalah Skrip Unggahan Multi File PHP yang siap dengan formulir di mana Anda dapat menambahkan beberapa input dan bilah kemajuan AJAX. Ini harus bekerja langsung setelah membongkar di server ...
Kita dapat dengan mudah mengunggah banyak file menggunakan php dengan menggunakan skrip di bawah ini.
Unduh kode Sumber Lengkap dan pratinjau
<?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]);
}
}
Inilah yang berhasil bagi saya. Saya harus mengunggah file, menyimpan nama file dan saya memiliki masukan tambahan dari bidang masukan untuk disimpan juga dan satu catatan per beberapa nama file. Saya menggunakan serialize () lalu menambahkannya ke kueri sql utama.
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();
}
}
}
Tautan bagus di:
Mengupload File Tunggal PHP dengan berbagai penjelasan dasar .
Mengunggah file PHP dengan Validasi
Unggah Beberapa File PHP Dengan Validasi Klik di sini untuk mengunduh kode sumber
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, ");
}
}
dan Anda harus memeriksa kode HTML Anda
<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>
Tautan bagus di:
Mengupload File Tunggal PHP dengan berbagai penjelasan dasar .
Mengunggah file PHP dengan Validasi
Unggah Beberapa File PHP Dengan Validasi Klik di sini untuk mengunduh kode sumber