2016-01-28 2 views
2

Я изучаю, как загрузить изображение с помощью codeigniter, и я получил разрешение на ошибку, когда я нажимаю на загрузку без какого-либо изображения, он хорошо работает, если я выбираю изображение. Я просто надеялся, что это покажет мое сообщение: загрузите изображения, вы можете посмотреть мой код и помочь мне разобраться в моей проблеме. ошибка говорит: enter image description here Это мой взгляд код:Codeigniter Разрешение отклонено Загрузка изображений

<head> 
<title>CI upload images</title> 
<meta charset="UTF-8"> 
</head> 
<body> 
<div id="gallery"> 
    <?php if(isset($images) && count($images)): 
    foreach ($images as $image): ?> 
    <div class="thumb"> 
     <a href="<?php echo $image['url']; ?>"> 
      <img src="<?php echo $image['thumb_url']; ?>"/> 
     </a> 
    </div> 

    ?> 
    <?php endforeach; else: ?> 
     <div id="blank_gallery">Please upload an Images</div> 
    <?php endif; ?> 
</div> 
<div id="upload"> 
    <?php 
    echo form_open_multipart('gallery'); 
    echo form_upload('userfile'); 
    echo form_submit('upload', 'Upload'); 
    echo form_close(); 
    ?> 
</div> 
</body> 

и это мой код контроллера:

class Gallery extends CI_Controller{ 
function index(){ 

    $this->load->model('Gallery_model'); 
    if($this->input->post('upload')){ 
     $this->Gallery_model->do_upload(); 
    } 

    $data['images'] = $this->Gallery_model->get_images(); 
    $this->load->view('gallery_view', $data); 

} 
} 

и вот моя модель

class Gallery_model extends CI_Model{ 

var $gallery_path; 
var $gallery_path_url; 

function __construct(){ 
    parent::__construct(); 

    $this->gallery_path = realpath(APPPATH . '../images'); 
    $this->gallery_path_url = base_url().'images/'; 
} 
function do_upload(){ 
    $config = array(
     'allowed_types' => 'jpg|jpeg|gif|png', 
     'upload_path' => $this->gallery_path, 
     'max_size' => 2000 
     ); 
    $this->load->library('upload', $config); 
    $this->upload->do_upload(); 
    $image_data = $this->upload->data(); 

    $config = array(
     'source_image' => $image_data['full_path'], 
     'new_image' => $this->gallery_path . '/thumbs', 
     'maintain_ration' => true, 
     'width' => 150, 
     'height' => 100 
     ); 
    $this->load->library('image_lib', $config); 
    $this->image_lib->resize(); 
} 
function get_images(){ 
    $files = scandir($this->gallery_path); 
    $files = array_diff($files, array('.','..','thumbs')); 

    $images = array(); 

    foreach ($files as $files) { 
     $images []= array(
      'url'=> $this->gallery_path_url . $files, 
      'thumb_url' => $this->gallery_path_url . 'thumbs/' . $files 
      ); 
    } 
    return $images; 
} 
} 

может пожалуйста Помогите?

+0

разрешение поддавки в папку, где вы хранения изображений. В linux: команда: sudo chmod -R 777 [имя вашей папки] – Monty

+0

Вы забыли указать путь, по которому будет загружаться изображение '$ config ['upload_path'] = './uploads /';' –

+0

@Monty как я могу дать разрешение на окна 10? –

ответ

1
'new_image' => $this->gallery_path . '/thumbs', 

Устанавливает имя/путь к целевому изображению. Вы будете использовать это предпочтение при создании копии изображения. Путь должен быть относительным или абсолютным путем сервера, а не URL-адресом.

вы установили new_image как папку, а не имя файла. сделайте это как $ this-> gallery_path. '/thumbs/my_new_file.ext'

+0

Я сделал это, но все же эта ошибка –

+0

Имеет ли эта папка? –

+0

Да, проблема здесь, когда я нажимаю кнопку «Загрузить», но я еще не выбрал изображение, если у него есть изображение, все хорошо работает –

0

У вас есть доступ к терминалу hv? Перейдите в корневую папку вашего проекта и введите следующее в своем терминале sudo chmod -R 755 * или sudo chmod -R 777 * Первый вариант имеет проблемы в некоторых некоторых проектах, следовательно, второй вариант.

0

Не загружайте изображение напрямую, не проверяя ошибки. Перед загрузкой проверьте наличие ошибок в файле. Изменение функции, как показано ниже:

function index() 
{ 
    $this->load->model('Gallery_model'); 
    if ($this->input->post('upload')) { 
     $errors = $this->Gallery_model->do_upload(); 
     if (!$errors) { 
      $data['images'] = $this->Gallery_model->get_images(); 
      $this->load->view('gallery_view', $data); 
     } else { 
      // your error displaying page. 
     } 
    } 
} 

function do_upload() 
{ 
    $error = array(); 
    $config = array(
     'allowed_types' => 'jpg|jpeg|gif|png', 
     'upload_path' => $this->gallery_path, 
     'max_size' => 2000 
    ); 
    $this->load->library('upload', $config); 
    if (!$this->upload->do_upload()) { 
     $error = array('error' => $this->upload->display_errors()); 
    } else { 
     $this->upload->do_upload(); 
     $image_data = $this->upload->data(); 

     $config = array(
      'source_image' => $image_data['full_path'], 
      'new_image' => $this->gallery_path . '/thumbs', 
      'maintain_ration' => true, 
      'width' => 150, 
      'height' => 100 
     ); 
     $this->load->library('image_lib', $config); 
     $this->image_lib->resize(); 
    } 

    return $error; 
} 

Для получения более подробной информации читайте HERE

0

сначала проверить загрузки изображений или нет, а затем изменить размер изображения

$result = array(); 

    if (!$this->upload->do_upload('userfile')) { 

     $result['error'] = $this->upload->display_errors(); 


    }else { 

     $image_data = $this->upload->data(); 

    $result['image_data']  = $image_data;  

     $config = array(
     'source_image' => $image_data['full_path'], 
     'new_image' => $this->gallery_path . '/thumbs', 
     'maintain_ration' => true, 
     'width' => 150, 
     'height' => 100 
     ); 

     $this->load->library('image_lib', $config); 
     $this->image_lib->resize(); 

    } 

return $result;