删除URL - JS中的UTF-8 DOM &PHP

Remove UTF-8 DOM in URL - JS & PHP

本文关键字:DOM PHP UTF-8 中的 URL JS 删除      更新时间:2023-09-26

我在URL中遇到了一个"奇怪"字符的问题。

我正在使用上传脚本在服务器上上传文件。当我尝试onComplete加载预览图像时,我遇到了一个问题。

这是我的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

文件名:768 f32dd43cc1f90b79c83cceed57eb2.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/

问候,马里奥

EF BB BF是BOM (Byte Order Mark)的UTF-8表示。某些东西正在保存或返回UTF-8编码的数据,其中开头有可选的 BOM。

好像已经在上传论坛上报告过了。

编辑

OK,那么echo $imeSlike必须保存的文件将BOM作为前3个字节。在保存PHP文件(或任何文件)时,您需要将编辑器配置为而不是添加BOM。

作为一种选择,如果您使用的是Windows,那么EditPad是突出显示这类编码问题的一个很好的编辑器(尽管还有很多其他的编辑器,您可以在其中配置是否添加BOM)。您可以在选项中关闭BOM。或者您可以尝试将文件保存为ASCII编码,这也将删除BOM。但是,根据PHP的内容,这可能不是一个实际的解决方案。

我找到了一个解决方案- JSON!:)

PHP中的Echo:

    $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>');
        }
     },
...

感谢大家的时间和分享解决方案!

问候,马里奥