2014-09-11 4 views
1

Моя проблема: я хочу Вставить изображение в таблицу MySQL с BLOB. В том же проекте я загрузил файл, но только ссылку в столбце VARCHAR, и он работает. Теперь я попытался с file_get_contents и fread, и оба они возвращают пустую строку. Что случилось с моим кодом? Или что-то не так с конфигурацией php.ini? Код:file_get_contents не работает с файлом tmp

$imgdata = NULL; 
    $imgext = NULL; 
    $file = $_FILES['foto']; 
    if (!in_array($file['type'], $con->ext)) { 
     exit('Archivo no permitido'); 
    } else { 
     if ($file['error'] === FALSE) { 
      exit('Error ' . $file['error']); 
     } else { 
      $attachtmp = $file['tmp_name']; 
      $imgext = $file['type']; 
      if (file_exists($attachtmp)) { 
       if (is_uploaded_file($attachtmp)) { 
        $fp = fopen($attachtmp, 'r+b'); 
        $imgdata = fread($fp, filesize($attachtmp)); 
        fclose($fp); 
        //if (empty(file_get_contents($attachtmp))) { 
        //$imgdata = $con->real_escape_string(file_get_contents($attachtmp)); 
        //} 
       } else { 
        exit('<h3>Error interno del servidor<h3>'); 
       } 
      } else { 
       exit('<h3>Error error interno del servidor<h3>'); 
      } 
     } 
    } 
+0

'$ файла = $ _FILES [ 'фото'] [ 'имя'];' или '$ file = $ _FILES ['foto'] ['tmp_name']; ' –

+0

Вы никогда не беспокоились о том, что загрузка выполнена успешно. Ты просто ПОСМОТРЕТЬ. Если загрузка не удалась, тогда '['tmp_name']' будет указывать на файл, который не существует или поврежден. –

+0

Как проверить, поврежден ли файл? – iglesiasedd

ответ

1

Проверьте ваши результаты первого:

// Check $_FILES['foto']['error'] value. 
switch ($_FILES['foto']['error']) { 
    case UPLOAD_ERR_OK: 
     break; 
    case UPLOAD_ERR_NO_FILE: 
     throw new RuntimeException('No file sent.'); 
    case UPLOAD_ERR_INI_SIZE: 
    case UPLOAD_ERR_FORM_SIZE: 
     throw new RuntimeException('Exceeded filesize limit.'); 
    default: 
     throw new RuntimeException('Unknown errors.'); 
} 

взяты из php manual

+0

Кажется, правильно загружено – iglesiasedd

+0

Кажется? Либо это, либо нет. Вам нужно переместить файл в безопасное место с безопасным именем, а затем открыть его, см. Связанный пример в своем сообщении. –

+0

Извините, что кажется. Да, он правильно загружен, потому что файл существует во временном php-файле. Я загрузил файлы таким же образом, только меняя файл 'file_get_contents' для' move_uploaded_file' и работает. – iglesiasedd

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