2016-12-26 65 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已经修复了一切都没有发生 –