Удалить UTF-8 DOM в URL - JS & PHP - PullRequest
       79

Удалить UTF-8 DOM в URL - JS & PHP

1 голос
/ 16 августа 2011

У меня проблема со "странными" символами в URL.

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

Вот мой js:

<script type="text/javascript">
$(document).ready(function() {
   $('#file_upload').uploadify({
     'height'    : 30,
     'width'     : 100,
     'buttonImg' : '<?=base_url()?>style/images/buttons/button_dodaj_gray.png',
     'cancelImg' : '<?=base_url()?>style/js/uploadify/cancel.png',
     'wmode'     : 'transparent',
     'onComplete': function(event, ID, fileObj, response, data) {
          if( response != "ERROR" )
          {
              var imageSrc = "";
              //imageSrc = "/ads_images_temp/";
              imageSrc = response;
              $('.image_container').html('<img src="<?=base_url()?>'+imageSrc+'"></img>');
          }
     },
     'fileExt'   : '*.jpg;*.jpeg;*.png;*.gif',
     'displayData': 'percentage',
     'multi'     : false,
     'uploader'  : '<?=base_url()?>style/js/uploadify/uploadify.swf',
     'script'    : '/tools/upload/product/glavna',

     'auto'      : true
   });
});
</script>

Проблема в строке: $('.image_container').html('<img src="<?=base_url()?>'+imageSrc+'"></img>');.

Я не получаю чистый URL-адрес изображения, но получаю следующее: %EF%BB%BF768f32dd43cc1f90b79c83cceed57eb2.png.

Имя файла: 768f32dd43cc1f90b79c83cceed57eb2.png

ОБНОВЛЕНИЕ: Мой файл PHP для чтения изображений:

if ( !empty($_FILES) )
            {
                $config['upload_path'] = $temp_path;
                $config['allowed_types'] = '*';
                $config['max_size'] = 4000;
                $config['encrypt_name'] = true;

                $this->load->library('upload', $config);
                $this->upload->initialize($config);

                if( ! ($this->upload->do_upload("Filedata"))) // Napaka pri nalaganju slike
                {
                    //echo $this->upload->display_errors('<p>', '</p>');
                    echo "ERROR";
                }
                else // Vse OK, nadaljuj
                {
                    $img = $this->upload->data();

                    if($img['image_width'] > 650)
                    {
                        $config['image_library'] = 'gd2';
                        $config['source_image'] = $img['full_path'];
                        $config['create_thumb'] = TRUE;
                        $config['maintain_ratio'] = TRUE;
                        $config['width'] = 650;

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

                        $this->image_lib->resize();
                    }

                    // Resize image    
                    $this->Product_model->resize_image($img['full_path'], $temp_path.'/crop_'.$img["raw_name"].$img["file_ext"], 160, 120);
                    $this->Product_model->resize_image($img['full_path'], $temp_path.'/crop_crop_'.$img["raw_name"].$img["file_ext"], 80, 60);

                    //$this->session->set_userdata("oddaja_oglasa_glavnaSlika",$img["raw_name"].$img["file_ext"]);

                    $imeSlike = $img["raw_name"].$img["file_ext"];

                    echo $imeSlike;
                }
            }

РЕДАКТИРОВАТЬ 2:

Снимок экрана консоли Chrome: http://imageshack.us/f/818/uploadifychromeconsole1.png/

С уважением, Марио

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

EF BB BF является представлением UTF-8 метки порядка байтов (BOM). Что-то сохраняет или возвращает данные в кодировке UTF-8 с необязательной BOM в начале.

Похоже, об этом сообщили на форуме uploadify .

Редактировать

ОК, поэтому файл, который echo $imeSlike должен быть сохранен с спецификацией в качестве первых 3 байтов. Вам необходимо настроить свой редактор на , а не , добавить спецификацию при сохранении файлов PHP (или даже любого файла).

В качестве альтернативы, если вы используете Windows, отличным редактором для выделения таких проблем кодирования является EditPad (хотя существует множество других, в которых вы можете настроить, будет ли добавлена ​​спецификация). Вы можете отключить спецификацию в Опции . Или вы можете попробовать сохранить файл в кодировке ASCII, что также приведет к удалению спецификации. Однако, в зависимости от содержимого вашего PHP, это может быть не практичным решением.

0 голосов
/ 17 августа 2011

Я нашел решение - JSON! :)) 1001 *

Эхо в PHP:

    $json = array("name" => $imeSlike, "error" => 0);
    echo json_encode($json);

В JS:

...
'onComplete': function(event, ID, fileObj, response, data) {
        eval("var obj1="+response);

        if( obj1.error == 0 )
        {
            $('.image_container').html('<img src="<?=base_url()?>ads_images_temp/crop_'+obj1.name+'"></img>');
        }
     },
...

Спасибо всем за потраченное время и за то, что поделились своими решениями!

С уважением, Марио

...