2013-03-09 6 views
2

У меня возникли проблемы с простой загрузкой изображения. Я уже пробовал, что загружаемая часть по отдельности отлично работает только после добавления функции изменения размера изображения, дает неизвестную ошибку.Загрузка, а затем изменение размера изображения

public function post_add_image() 
    { 
    \Upload::process(array(
     'path'  => '../images/', 
     'normalize' => true, 
     'change_case' => 'lower', 
     'randomize' => true, 
     'ext_whitelist' => array('jpeg', 'jpg', 'gif', 'png'), 
     'max_size' => 1024 * 1024, 

    )); 

    if (!\Upload::is_valid()) { 
     return $this->response(\Upload::get_errors()); 
    } else { 
     foreach (\Upload::get_files() as $file) { 

     // Here comes ERROR 
     $image = Image::load($file['file'], false, $file['extension']); 
     $image->crop_resize(800, 600); 
     $image->save('test'); 

     } 
    } 

    //\Upload::save(); 

    return $this->response(\Upload::get_files()); 
    } 

И ошибка:

RuntimeException [Error]: Библиотека не поддерживает этот тип файла для/TMP/phpOnZReS.

CorePath/классы/изображение/driver.php @ линия

И я сделал var_dump загруженного файла:

array(10) { 
    ["name"]=> 
    string(27) "crunchbang-logo-minimal.png" 
    ["type"]=> 
    string(9) "image/png" 
    ["error"]=> 
    bool(false) 
    ["size"]=> 
    int(278) 
    ["field"]=> 
    string(10) "pictures:0" 
    ["file"]=> 
    string(14) "/tmp/phpDdTLwJ" 
    ["errors"]=> 
    array(0) { 
    } 
    ["extension"]=> 
    string(3) "png" 
    ["filename"]=> 
    string(23) "crunchbang-logo-minimal" 
    ["mimetype"]=> 
    string(9) "image/png" 
} 
+0

Какую версию FuelPHP вы используете? Принуждение расширения изображения стало доступным только в версии 1.3. –

+0

Ну, я использую версию 1.5 linux и да, расширение gd загружено. По крайней мере, изменение размера изображения работает после того, как изображение уже загружено на сервер, но этот шаг требует дополнительных ресурсов. –

+0

Проверить правильность пути загрузки? Можете ли вы попытаться поместить изображение в папку с активом вместо ../image? –

ответ

0

Я думаю, ваша проблема может быть с заходом Upload::save() после того как вы пытаетесь измените размер изображения. Загруженный файл будет помещен в папку tmp PHP, поэтому ваш /tmp/phpOnZReS.

Попробуйте переместить Upload::save() прямо перед вашей петлей foreach (\Upload::get_files() as $file) и посмотрите, поможет ли это.

1

Это помогло бы (Вы должны сохранять файлы изображения на общественном активу или туда, куда вы хотите, прежде чем изменение размера файла)

public function post_add_image() 
{ 
    \Upload::process(array(
    'path'  => '../images/', 
    'normalize' => true, 
    'change_case' => 'lower', 
    'randomize' => true, 
    'ext_whitelist' => array('jpeg', 'jpg', 'gif', 'png'), 
    'max_size' => 1024 * 1024, 

    )); 

    if (!\Upload::is_valid()) { 
     return $this->response(\Upload::get_errors()); 
    } else { 

     // Here comes the fix 

     Upload::save(); 
     $saved_image = Upload::get_files(); 
     $original_name = $saved_image[0]['name']; 
     $file_name = $saved_image[0]['saved_as']; 

     $public_asset_path_img = "assets".DS."img"; 

     $image = Image::load(DOCROOT.$public_asset_path_img.DS.$file_name, false, $file['extension']); 
     $image->resize('800'); 
     $image->save(DOCROOT.$public_asset_path_img.DS.$file_name); 


    } 

    return $this->response(\Upload::get_files()); 
} 
Смежные вопросы