2011-12-15 3 views
0

Интересно, может ли кто-нибудь помочь мне.Сообщение об ошибке в файле

Я пытаюсь включить сообщение об ошибке «fileize» в сценарий, показанный ниже, который используется для загрузки BLOB-файлов на сервер mySQL.

if (!mysql_connect($db_host, $db_user, $db_pwd)) 
    die("Can't connect to database"); 

if (!mysql_select_db($database)) 
    die("Can't select database"); 

// This function makes usage of 
// $_GET, $_POST, etc... variables 
// completly safe in SQL queries 
function sql_safe($s) 
{ 
    if (get_magic_quotes_gpc()) 
     $s = stripslashes($s); 

    return mysql_real_escape_string($s); 
} 

// If user pressed submit in one of the forms 
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    if (!isset($_POST["action"])) 
    { 
     // cleaning title field 
     $title = trim(sql_safe($_POST['title'])); 

     if ($title == '') // if title is not set 
      $title = 'No title provided';// use (empty title) string 

      @list(, , $imtype,) = getimagesize($_FILES['photo']['tmp_name']); 
      // Get image type. 
      // We use @ to omit errors 

      if ($imtype == 3) // cheking image type 
       $ext="png"; // to use it later in HTTP headers 
      elseif ($imtype == 2) 
       $ext="jpeg"; 
      elseif ($imtype == 1) 
       $ext="gif"; 
      else 
       $msg = 'Error: unknown file format'; 
if($_FILES["fileupload"]["size"]/1024000 >= 10) 
      {  
      $fileErrMsg = "<br />Your uploaded file size:<strong>[ ". $_FILES["fileupload"]["size"]/1024000 . " MB]</strong> is more than allowed Size.<br />";   
      } 

     if (isset($_FILES['photo'])) 
     { 
      if (!isset($msg)) // If there was no error 
      { 
       $data = file_get_contents($_FILES['photo']['tmp_name']); 
       $data = mysql_real_escape_string($data); 
       // Preparing data to be used in MySQL query 

       mysql_query("INSERT INTO {$table} 
           SET ext='$ext', title='$title: ', 
            data='$data'"); 

       $msg = 'Success: Image Uploaded'; 
      } 
     } 
     elseif (isset($_GET['title']))  // isset(..title) needed 
      $msg = 'Error: file not loaded';// to make sure we've using 
              // upload form, not form 
              // for deletion 

     if (isset($_POST['del'])) // If used selected some photo to delete 
     {       // in 'uploaded images form'; 
      $imageid = intval($_POST['del']); 
      mysql_query("DELETE FROM {$table} WHERE imageid=$imageid"); 
      $msg = 'Image deleted'; 
     } 

     if (isset($_POST['view'])) // If used selected some photo to delete 
     { // in 'uploaded images form'; 
      $imageid = intval($_POST['view']); 
      mysql_query("SELECT ext, data FROM {$table} WHERE imageid=$imageid"); 

      if(mysql_num_rows($result) == 1) 
      { 
       $image = $row['myimage']; 
       header("Content-type: image/gif"); // or whatever 
       print $image; 
       exit; 
      } 
     } 
    } 
    else 
    { 
     $imageid = intval($_POST['del']); 

     if ($_POST["action"] == "view") 
     { 
      $result = mysql_query("SELECT ext, UNIX_TIMESTAMP(imagetime), data 
            FROM {$table} 
            WHERE imageid=$imageid LIMIT 1"); 

      if (mysql_num_rows($result) == 0) 
       die('no image'); 

      list($ext, $imagetime, $data) = mysql_fetch_row($result); 

      $send_304 = false; 
      if (php_sapi_name() == 'apache') { 
       // if our web server is apache 
       // we get check HTTP 
       // If-Modified-Since header 
       // and do not send image 
       // if there is a cached version 

       $ar = apache_request_headers(); 
       if (isset($ar['If-Modified-Since']) && // If-Modified-Since should exists 
        ($ar['If-Modified-Since'] != '') && // not empty 
        (strtotime($ar['If-Modified-Since']) >= $imagetime)) // and grater than 
        $send_304 = true;          // imagetime 
      } 

      if ($send_304) 
      { 
       // Sending 304 response to browser 
       // "Browser, your cached version of image is OK 
       // we're not sending anything new to you" 
       header('Last-Modified: '.gmdate('D, d M Y', $ts).' GMT', true, 304); 

       exit(); // bye-bye 
      } 

      // outputing HTTP headers 
      header('Content-Length: '.strlen($data)); 
      header("Content-type: image/{$ext}"); 

      // outputing image 
      echo $data; 
      exit(); 
     } 
     else if ($_POST["action"] == "delete") 
     { 
      $imageid = intval($_POST['del']); 
      mysql_query("DELETE FROM {$table} WHERE imageid=$imageid"); 
      $msg = 'Image deleted'; 
     } 
    } 
} 
?> 

Через некоторое руководство, которое я получил на этом сайте, я смог придумать способ, чтобы проверить размер файла, который начинается на этой линии:

if($_FILES["fileupload"]["size"]/1024000 >= 10) 

, но я не могу получить сообщение об ошибке сообщение для работы.

Конкретное сообщение должно быть активировано, если размер файла превышает 1 МБ. Когда я пытаюсь загрузить файл больше этого, файл будет правильно отклонен, но я получаю неправильное сообщение об ошибке «Ошибка: неизвестный формат файла».

Я пробовал всевозможные способы попытаться заставить это работать, но я просто получаю такое же неправильное сообщение об ошибке.

Я был бы так благодарен, если бы кто-нибудь мог взглянуть на это и сообщить мне, где я ошибаюсь.

Большое спасибо

РЕШЕНИЕ

if (isset($_FILES['photo'])) 
{ 
list($width, $height, $imtype, $attr) = getimagesize($_FILES['photo']['tmp_name']); 
// Get image type. 

if ($imtype == 3) 
$ext="png"; // 
elseif ($imtype == 2) 
$ext="jpeg"; 
elseif ($imtype == 1) 
$ext="gif"; 
else 
$msg = 'Error: unknown file format'; 

if($_FILES["photo"]["size"]/102400 >= 1) {   
$msg = "he file you wish to upload is:<strong>[ ". $_FILES["photo"]["size"]/1024000 . " MB]</strong> is more than allowed Size.";   
} 

ответ

0

Looks, как и все другие ваши сообщения об ошибке в переменную под названием $msg. Я обновил свой расчет, чтобы быть немного проще:

if($_FILES["fileupload"]["size"]/102400 >= 1) 
{  
    $msg = "<br />Your uploaded file size:<strong>[ ". $_FILES["fileupload"]["size"]/1024000 . " MB]</strong> is more than allowed Size.<br />";   
} 
+0

Привет, большое спасибо за то, что нашли время, чтобы ответить на мое сообщение. Я попытался изменить переменную сообщения, чтобы соответствовать другим в моем скрипте, но, к сожалению, я все еще получаю сообщение об ошибке «формат файла». С уважением – IRHM

+0

Если вы используете мой код, и вы все еще получаете это сообщение об ошибке, я предлагаю повторить размер файла, который вы вычисляете, чтобы убедиться, что он правильный: 'echo" FILESIZE: ". ($ _ FILES [" fileupload "] [ "размер"]/102400); exit; 'Кроме того, если отображается сообщение об ошибке« формат файла », вам следует дважды проверить значение« $ imtype » –

+0

. Должен признаться, что я особенно неопытен, когда речь заходит о PHP, но я, конечно же, начну смотреть на ваши предложения. С уважением – IRHM

1

Я новичок в PHP, но я искал что и нашел в руководстве

http://php.net/manual/en/function.set-error-handler.php

я отправил в ответ, потому что я не могу комментарий. Я надеюсь, что это помогает.

+0

Привет, большое спасибо за это, я посмотрю на это. С уважением. – IRHM

Смежные вопросы