2012-05-07 37 views
0

我有以下腳本上傳和圖像和縮略圖到目錄並將img名稱(img和拇指)存儲到數據庫。單個圖像到多個圖像上傳

我最初在網上找到這個腳本,但是現在我需要能夠上傳多個圖片......它對一個圖片原樣正常工作。

<?php 
//error_reporting(0); 

$change=""; 
$abc=""; 


define ("MAX_SIZE","400"); 
function getExtension($str) { 
     $i = strrpos($str,"."); 
     if (!$i) { return ""; } 
     $l = strlen($str) - $i; 
     $ext = substr($str,$i+1,$l); 
     return $ext; 
} 

$errors=0; 

if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
    $image =$_FILES["file"]["name"]; 
    $uploadedfile = $_FILES['file']['tmp_name']; 


    if ($image) 
    { 

     $filename = stripslashes($_FILES['file']['name']); 

     $extension = getExtension($filename); 
     $extension = strtolower($extension); 


if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
     { 

      $change='<div class="msgdiv">Unknown Image extension </div> '; 
      $errors=1; 
     } 
     else 
     { 

$size=filesize($_FILES['file']['tmp_name']); 


if ($size > MAX_SIZE*1024) 
{ 
    $change='<div class="msgdiv">You have exceeded the size limit!</div> '; 
    $errors=1; 
} 


if($extension=="jpg" || $extension=="jpeg") 
{ 
$uploadedfile = $_FILES['file']['tmp_name']; 
$src = imagecreatefromjpeg($uploadedfile); 

} 
else if($extension=="png") 
{ 
$uploadedfile = $_FILES['file']['tmp_name']; 
$src = imagecreatefrompng($uploadedfile); 

} 
else 
{ 
$src = imagecreatefromgif($uploadedfile); 
} 

echo $scr; 

list($width,$height)=getimagesize($uploadedfile); 


$newwidth=60; 
$newheight=($height/$width)*$newwidth; 
$tmp=imagecreatetruecolor($newwidth,$newheight); 


$newwidth1=25; 
$newheight1=($height/$width)*$newwidth1; 
$tmp1=imagecreatetruecolor($newwidth1,$newheight1); 

imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height); 

imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height); 


$filename = "images/". $_FILES['file']['name']; 

$filename1 = "images/small". $_FILES['file']['name']; 



imagejpeg($tmp,$filename,100); 

imagejpeg($tmp1,$filename1,100); 

imagedestroy($src); 
imagedestroy($tmp); 
imagedestroy($tmp1); 
}} 

} 

//If no errors registred, print the success message 
if(isset($_POST['Submit']) && !$errors) 
{ 

    mysql_query("INSERT INTO `imgs` (`id` ,`user_id` ,`img_name`) VALUES (NULL , '$userID', 'img1.jpg');"); 
    $change=' <div class="msgdiv">Image Uploaded Successfully!</div>'; 
} 

?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head> 
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> 
<meta content="en-us" http-equiv="Content-Language"> 
    </head><body> 
<?php echo $change; ?> 

       <div id="posts"> 
       <form method="post" action="" enctype="multipart/form-data" name="form1"> 
       <input size="25" name="file" type="file" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10pt" class="box"/> 
       <input type="submit" id="mybut" value="Upload" name="Submit"/> 
       </form> 
       </div> 
</body></html> 

因爲我知道我可以在HTML部分更改爲foreach循環,如多重圖像:

<form method="post" action="" enctype="multipart/form-data" name="form1"> 
      <?php 
$allow_upload = 10; 
for($i=0; $i<$allow_upload; $i++) { 
      echo '<input size="25" name="file[]" type="file" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10pt" class="box"/>'; 
     } 
?>   
<input type="submit" id="mybut" value="Upload" name="Submit"/> 
</form> 

,但我還沒有能夠弄清楚在何處以及如何把一個foreach循環和與adapty其餘的爲多個圖像。

我的數據庫設置將像id,userID,大img,小img。 任何幫助將不勝感激,即時準備開始拉我的頭髮!

回答

0

如果你想循環多個文件輸入元素,那麼你需要告訴它它是一個數組,除非你對每個輸入元素有不同的名稱。

for($i=0; $i<$allow_upload; $i++) { 
    echo '<input size="25" name="file[]" type="file"'/>; 
} 

,如果你想從此一個輸入元素的

<input name="filesToUpload[]" type="file" multiple/> 
+0

對不起,我的意思是做name =「file []」,我很明白。 – Keezy

+0

如果你理解數組,那麼'$ _FILES'將具有所有的值。您可以嘗試'var_dump($ _ FILES)'來檢查PHP腳本中的內容,然後循環它。 –

0

而是多個輸入文件,你可以使用一個單一的輸入文件,並保存在陣列中的所有文件,並使用的foreach於選擇多個文件將每個文件保存到文件夾。

<?php 
if($_SERVER["REQUEST_METHOD"] == "POST") { 


foreach($_FILES['allimages'] as $files) { 
var_dump($files); 
    } 
} 

?> 

<form id="fileupload" enctype="multipart/form-data" method="post"> 
<input type="file" name="allimages[]" id="allimages" multiple><!--Use CTRL key to upload multiple images --> 
<input type="submit" name="submit" id="submit"> 
</form> 

您需要按住cntrl鍵才能上傳多個文件。