2012-05-06 9 views
1

複数の画像アップロードスクリプトがあり、画像のサイズを変更してサムネイルを作成しています。いくつかの奇妙な理由のためにいくつかの画像は行っていません。この場合、画像のサイズは小さく、JPEG形式のファイルです。何らかの理由でそれが通過しない。それは他の画像と完全に動作します。私は単一のファイルに対して同じスクリプトを使用しており、その画像ファイルをアップロードしています。助けてください!ありがとう!PHPマルチ画像アップロードスクリプトで一部の画像ファイルがアップロードされない

<?php require_once("../includes/connection.php"); ?> 
<?php require_once("../includes/functions.php"); ?> 
<?php 
$albumName = $_GET['album']; 
$albumDate = $_GET['date']; 
$albumId = $_GET['id']; 
$upload_path = "/home/elevat17/public_html/images/gallery/"; //location 
$images = $_FILES['userFile']['name']; 
$temps = $_FILES['userFile']['tmp_name']; 
$types = $_FILES['userFile']['type']; 
$errors = $_FILES["userFile"]["error"]; 
if ($_FILES["userFile"]["name"]=="") {echo "You must choose a file to upload!";} 
if(in_array("", $images)) {die('Select an image to upload.');} 


else 

{ 
for ($n=0; isset($images[$n]) && isset($temps[$n]) && isset($types[$n]) && isset($errors[$n]); $n++) { 
if ((($types[$n] == "image/gif") 

|| ($types[$n] == "image/jpeg") 

|| ($types[$n] == "image/pjpeg") 

|| ($types[$n] == "image/png") 

|| ($types[$n] == "image/jpg") 

|| ($types[$n] == "image/x-png"))) 


{ 

if ($errors[$n] > 0) 

{ 

$content = "Return Code: " . $errors[$n] . "<br />"; 

} 

else 

{ 

$content = "Upload: " . $images[$n] . "<br />"; 

$content = "Type: " . $types[$n] . "<br />"; 

$content = "<br/><br/>"; 



if (file_exists($upload_path . $images[$n])) 

{ 

die($images[$n].' already exists. Upload cancelled!'); 

} 

else 

{ 

$uploadedfile = $temps[$n]; 

$image = $images[$n]; 

$size = getimagesize($uploadedfile); 

$type = $size['mime']; 

$width = $size[0]; 

$height = $size[1]; 

if($height > '900' || $width > '600') 

{ 

$newwidth=600; // NEW WIDTH 

$newheight=($height/$width)*$newwidth; 

$tmp=imagecreatetruecolor($newwidth,$newheight); 

$filename = $upload_path.$image; 



if($size[2] == IMAGETYPE_GIF) 

    { 

     $src = imagecreatefromgif($uploadedfile); 

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

     imagegif($tmp,$filename,100); 

    } 

elseif($size[2] == IMAGETYPE_JPEG) 

    { 

     $src = imagecreatefromjpeg($uploadedfile); 

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

     imagejpeg($tmp,$filename,100); 

    } 

elseif($size[2] == IMAGETYPE_PNG) 

    { 

     $src = imagecreatefrompng($uploadedfile); 

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

     imagepng($tmp,$filename,9); 

    } 
crop_img(75,75); 
move_uploaded_file($uploadedfile, $filename); 
imagedestroy($src); 

imagedestroy($tmp); 

} 

else 

{  




} 
$query = "INSERT INTO photos (photo_name, in_album) VALUES ('{$image}', $albumId)"; 
      if (mysql_query($query)) {header("location: edit_album.php?id={$albumId}");} 




} 

} 

} 

else { $content  = "Invalid file"; } 

} 

} 

?> 
<?php require("../includes/footer.php"); ?> 
+0

コードをよりわかりやすい形で整理してください。 – DaneSoul

+0

画像の詳細を教えてください。サイズ、幅、高さ、ファイルの終了 – Sliq

+0

@ChristianLavieおかげさまで、あなたが正しい軌道に乗っていたと思うのは、if文のためにコードが乱れていた画像の幅と高さのためでした。それを固定した。歓声 –

答えて

0

アップロードが成功したかどうかはチェックしていません。これはコードを書く悪い方法です。正確にONEアップロードが成功する方法と、MANY失敗する方法があります。

また、アップロードを行っている人物が悪意のあるものではなく、アップロードする前にnastyvirus.exeの名前をcutekittens.jpgに変更していないとします。

は、最低でも、あなたは

if ($_FILES['userfile']['error'] !== UPLOAD_ERR_OK) { 
    die('Upload failed with error code ' . $_FILES['userfile']['error']); 
} 

サーバがファイルの種類が何であるかを判断持ってhttp://php.net/fileinfoのようなものを使用し、あなたが実際に動作するように有益な何かを持っていることを確認し、する必要がありますする必要があります。

決してユーザーがあなたに送信したものを信用していません。

+0

おかげで問題は解決しました。画像の高さと幅を確認したif文が問題でした。私はコードを書いていませんでしたが、私はあまりにも怠惰で、急いで書いてしまいました:P。本当にありがとう。乾杯 –

関連する問題