1

URL の「奇妙な」文字に問題があります。

Uploadify スクリプトを使用してサーバーにファイルをアップロードしています。プレビュー イメージを 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

ファイル名: 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/

よろしく、マリオ

4

2 に答える 2

2

EF BB BFバイトオーダーマーク(BOM)のUTF-8表現です。最初にオプションのBOMを使用して、UTF-8でエンコードされたデータを保存または返すことがあります。

uploadifyフォーラムで報告されているようです。

編集

echo $imeSlikeOK、 BOMで最初の3バイトとして保存されているはずのファイルです。PHPファイル(または実際には任意のファイル)を保存するときにBOMを追加しないようにエディターを構成する必要があります。

別の方法として、Windowsを使用している場合、この種のエンコーディングの問題を強調するための優れたエディターはEditPadです(ただし、BOMを追加するかどうかを構成できるエディターは他にもたくさんあります)。オプションでBOMをオフにすることができます。または、ファイルをASCIIエンコーディングとして保存してみてください。これにより、BOMも削除されます。ただし、PHPのコンテンツによっては、これは実用的な解決策ではない場合があります。

于 2011-08-16T12:01:04.310 に答える
0

私は解決策を見つけました-JSON!:)

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

お時間を割いてソリューションを共有していただき、ありがとうございます。

よろしく、マリオ

于 2011-08-16T20:23:46.310 に答える