2016-12-26 80 views
0

我有下面的代碼不上傳圖像嘗試了很多東西,但不起作用。我無法弄清楚什麼是問題,但是在日誌之前,相同的代碼被用於工作。PHP圖像上傳不起作用

HTML表單

<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" value="Upload" name="submit"/> 
</form> 

最後一次嘗試代碼如下:

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


define ("MAX_SIZE","12000"); 
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=1990; 
$newheight=1100; 
$tmp=imagecreatetruecolor($newwidth,$newheight); 
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height); 

$imu = mysql_query("select max(id)+1 as id from menu_items"); 
$ints = mysql_fetch_array($imu); 
$chk = $ints['id']; 

$ids = $ints['id']; 

$srids = $ints['showroom_id']; 

$name = $_FILES["file"]["name"]; 
$ext = end((explode(".", $name))); # extra() to prevent notice 

$ses_msr = $_SESSION['ses_member_id']; 
$folderPath = "images/rest_menu_items"; 
mkdir($folderPath); 

$filename = "images/rest_menu_items/".$ids.'.'.$ext; 
$filename1 = "images/small". $_FILES['file']['name']; 

imagejpeg($tmp,$filename,100); 
mysql_query(" 
UPDATE menu_items 
SET 
    filename='".$ids.'.'.$ext."' 
WHERE 
    id='".$_GET['id']."' 
"); 

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

} 
+0

請提供表單示例和任何日誌/錯誤/調試信息 – Ostin

+0

'functiongetExtension' space missing?正確的是'功能getExtension'? – Evus

+0

@Ostin請檢查我已更新我的問題 –

回答

0

解決這些問題:

第6列:

function getExtension($str){ 

行48:

echo $src; 

行79:

mkdir($folderPath); 

並確保您擁有寫入權限。

另外PHP的錯誤日誌會有很大幫助。你可以調試你的代碼,如果你把

error_reporting(E_ALL); 

到文件開頭。

另外請確保您已安裝PHP GD

創建文件只有內容是。

<?php 
phpinfo(INFO_MODULES); 
?> 

應該有「GD支持啓用」如果沒有找到您需要安裝it

如果存在,則檢查write permissions,文件test.txt必須存在。所以創建空文件test.txt來測試這個。

$filename = 'test.txt'; 
if (is_writable($filename)) { 
    echo 'The file is writable'; 
} else { 
    echo 'The file is not writable'; 
} 

如果這些東西被檢查,那麼下面的代碼將工作。

測試過的代碼工作。我刪除了查詢和SESSION數據,因爲我無法調試它們而沒有全部代碼。

<?php 
$change=""; 
$abc=""; 


define ("MAX_SIZE","12000"); 
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 $src; 

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

$newwidth=1990; 
$newheight=1100; 
$tmp=imagecreatetruecolor($newwidth,$newheight); 
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height); 

imagejpeg($tmp,"Test.jpg",100); 


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

} 
?> 
+0

請檢查我的代碼在quesiton我已更新&error_reporting(E_ALL)後沒有錯誤; –

+0

第48行$ scr到'$ src'。錯誤回來,這個社區可以幫助你。沒有它們是不可能的。例如,我們不知道你的問題是寫入權限還是mysql查詢或其他問題。 – Evus

+0

添加了測試代碼。如果該代碼無法正常工作,則您的問題是mysql查詢,寫入權限或者您沒有按照我所述安裝GD。 – Evus

0

只要改變Function語法。 function關鍵字

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

對於獲取錯誤使用下面的代碼。

if (!ini_get('display_errors')) { 
    ini_set('display_errors', '1'); 
} 
+0

嗯,我做了這個,但沒有發生沒有錯誤沒有和它沒有上傳 –

+0

修復其他語法錯誤。例如,第48行:'echo $ scr;'到'echo $ scr;'。 – Evus

+0

@Evus已經修復了一切都沒有發生 –