我对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
更新:文件用于读取图像:
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/
你好,马里奥
发布于 2011-08-16 20:23:46
我找到了一个解决方案- JSON!:)
PHP中的Echo:
$json = array("name" => $imeSlike, "error" => 0);
echo json_encode($json);在联合来文中:
...
'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-16 12:01:04
EF BB BF是字节顺序标记 (BOM)的UTF-8表示.有些东西是保存或返回UTF-8编码的数据与可选的BOM在开始.
看来它已经在上传论坛上报道过了。
编辑
好的,所以echo $imeSlike保存的文件必须以BOM作为前3个字节。您需要将编辑器配置为,而不是,在保存PHP (或任何文件)时添加BOM。
作为另一种选择,如果您正在使用Windows,突出显示这类编码问题的一个很好的编辑器是EditPad (尽管有很多其他的编辑器可以配置BOM是否被添加)。您可以在选项中关闭BOM。或者您可以尝试将文件保存为ASCII编码,这也将删除BOM。但是,取决于PHP的内容,这可能不是一个实用的解决方案。
https://stackoverflow.com/questions/7077817
复制相似问题