php 上传图片 中文,图片上传-PHP上传中文名图片失败?

我程序里面有个PHP上传图片的功能,但是放在服务器上上传中文名称的图片,图片不能显示出来,看了目录中的图片,是上传图片之后存在目录里面乱码了。下面是我的代码,不知道是哪里出了问题

`public function _upload(){

$type = trim($_POST['uptype']);

$callback = trim($_POST['upcallback']);

if($type=='image'){

$ext = getFileExt($_FILES['upfile']['name']);

if(!file_exists(DIR_UPLOAD.'/images/'.date("Ymd"))){

makeDir(DIR_UPLOAD,'/images/'.date("Ymd"));

}

if($ext =='jpg' || $ext =='png' || $ext =='gif' || $ext =='doc' || $ext =='txt' || $ext =='pdf' || $ext =='ico' ){

$upfile = DIR_UPLOAD.'/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);

$upfilepath = '/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);

$upfileurl = URL_UPLOAD.'/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);

move_uploaded_file($_FILES['upfile']['tmp_name'],$upfile);

$filecg = trim($_POST['filecg']);

if(!$filecg){

$filecg = 1;

}

if($callback){

echo '';

}

die();

}

}

echo '';

我的HTML 中 使用的均是UTF-8`

我这个如何修改才能上传中文文件名图片呢?

我的服务器是win2003 是不是因为服务器win2003 是gbk的关系呢

回复内容:

我程序里面有个PHP上传图片的功能,但是放在服务器上上传中文名称的图片,图片不能显示出来,看了目录中的图片,是上传图片之后存在目录里面乱码了。下面是我的代码,不知道是哪里出了问题

`public function _upload(){

$type = trim($_POST['uptype']);

$callback = trim($_POST['upcallback']);

if($type=='image'){

$ext = getFileExt($_FILES['upfile']['name']);

if(!file_exists(DIR_UPLOAD.'/images/'.date("Ymd"))){

makeDir(DIR_UPLOAD,'/images/'.date("Ymd"));

}

if($ext =='jpg' || $ext =='png' || $ext =='gif' || $ext =='doc' || $ext =='txt' || $ext =='pdf' || $ext =='ico' ){

$upfile = DIR_UPLOAD.'/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);

$upfilepath = '/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);

$upfileurl = URL_UPLOAD.'/images/'.date("Ymd").'/'.date("His").'_'.iconv("gb2312", "UTF-8", $_FILES['upfile']['name']);

move_uploaded_file($_FILES['upfile']['tmp_name'],$upfile);

$filecg = trim($_POST['filecg']);

if(!$filecg){

$filecg = 1;

}

if($callback){

echo '';

}

die();

}

}

echo '';

我的HTML 中 使用的均是UTF-8`

我这个如何修改才能上传中文文件名图片呢?

我的服务器是win2003 是不是因为服务器win2003 是gbk的关系呢

我自己想了个办法、

就是把替换掉文字

$upfilepath = '/images/'.date("Ymd").'/'.date("His").''.preg_replace('[^a-z0-9-_.]i','',$_FILES'upfile');

虽然可以 显示图片了, 但是很勉强

这个与http协议有关。上传之前抓个包,看看你的程序是gbk为主还是utf-8为主。确定之后再去对应的iconv。

服务器是linux?看看是不是支持中文

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值