2016-12-26 5 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'? Прямо на 'функция getExtension'? – Evus

+0

@Ostin, пожалуйста, проверьте, что я обновил свой вопрос –

ответ

0

исправить эти:

Строка 6:

function getExtension($str){ 

Строка 48:

echo $src; 

Строка 79:

mkdir($folderPath); 

И убедитесь, что у вас есть права на запись.

Также журнал ошибок PHP поможет много. Вы можете отладить код, если вы положите

error_reporting(E_ALL); 

в начало файла.

Также убедитесь, что вы установили PHP GD.

Создать файл whre only content is.

<?php 
phpinfo(INFO_MODULES); 
?> 

Там должно быть «GD Поддерживается Enabled» Если он не найден вам нужно установить 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;' to 'echo $ scr;'. – Evus

+0

@Evus уже исправлено все, что ничего не происходит –