0

以下のコードから、スペースを含む画像をアップロードし、後続の単語を大文字にすることができますが、そのような画像をビュー ページに表示しようとすると、表示されません。次のようなエラーが発生していますThe URI you submitted has disallowed characters.

<img src="<?php echo base_url().'uploads/avatar/'.$avatar?>"/> Imgタグがスペースを含む画像名を読み取り、後続の単語を大文字にできるようにするには、このエラーを修正するにはどうすればよいですか?のような画像を表示しています。

または代替ソリューション、アップロード中にスペースを削除したり、画像名で後続の単語を大文字にしたりするにはどうすればよいですか?

以下のコードでファイルをアップロードしています。

   function do_upload()
        { 
         $this->load->library('form_validation'); 

        if((isset($_FILES['userfile']['size'])) && ($_FILES['userfile']['size'] > 0))
            {
                 $this->form_validation->set_error_delimiters('<li  class="errorlist">', '</li>')->set_rules('userfile', 'New Image', 'trim|callback_valid_upload_userfile');   
            }    
      $uid=$this->session->userdata('userid');
    $config['upload_path'] = './uploads/avatar/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '5000'; 
    $this->load->library('upload', $config);  

 if ( $this->input->post('user_id') && $this->form_validation->run() == TRUE)
 {  
         $avatar= $_FILES['userfile']['name'];  //getting the file name  
          $this->loginmodel->update_user_basic_info($uid); //update both 

    }
4

2 に答える 2

4

それは非常に簡単です。

$config['remove_spaces'] = TRUE;

したがって、アップロードプロセスの後では$this->upload->data()なくからファイル名を取得する必要があります。$_FILES

于 2013-05-04T18:21:15.603 に答える
0

URL でうまく機能するわかりやすい画像ファイル名を生成したい場合...おそらく、CodeIgniter の URL ヘルパーを拡張slugify()して、たとえばという関数を含めることができます。

ディレクトリに作成MY_url_helper.phpしますapplication/helpers/。このファイルの内容:

<?php
function slugify($text){ 
  // replace non letter or digits by -
  $text = preg_replace('~[^\\pL\d]+~u', '-', $text);
  // trim
  $text = trim($text, '-');
  // transliterate
  $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
  // lowercase
  $text = strtolower($text);
  // remove unwanted characters
  $text = preg_replace('~[^-\w]+~', '', $text);
  if (empty($text)) return "";
  return $text;
}

次に、 ... にエントリを追加して、url ヘルパーを自動ロードconfig/autoload.phpします。たとえば、次のようにします。$autoload['helper'] = array('html', 'url', ...);

最後に、使用slugify()...

$image1= slugify($_FILES['userfile']['name']);

slugify の各ステップがどのように機能するかについては、コメントに埋め込まれています。入力ファイル名の引数を取り、一度に 1 つの操作で、より URL に適した等価なものに準備します。

于 2013-05-04T09:42:00.427 に答える