
PHP上传出现乱码 请问以下这段上传代码我上传中文时会出现乱码,请问怎么修改啊
<?phpmb_http_input("UTF-8");mb_http_output("UTF-8");if(getGet('access2008_cmd')=='2')...
<?php
mb_http_input("UTF-8");
mb_http_output("UTF-8");
if(getGet('access2008_cmd')=='2'){
die('0');
}
if(getGet('access2008_cmd')=='3'){
die('1');
}
$php_path = dirname(__FILE__) . '/';
$php_url = dirname($_SERVER['PHP_SELF']) . '/';
//文件保存目录路径
$save_path = $php_path . './';
$save_url = $php_url . './';
$ext_arr = array('gif', 'jpg', 'jpeg', 'zip', 'rar', 'png', 'bmp');
$max_size = 102400*50000;//(默认500K)
$save_path = realpath($save_path) . '/';
//有上传文件时
if (empty($_FILES) === false) {
//原文件名
$file_name = $_FILES['Filedata']['name'];
//服务器上临时文件名
$tmp_name = $_FILES['Filedata']['tmp_name'];
//文件大小
$file_size = $_FILES['Filedata']['size'];
//检查文件名
if (!$file_name) {
exit("返回错误: 请选择文件。");
}
//检查目录
if (@is_dir($save_path) === false) {
exit("返回错误: 上传目录不存在。($save_path)");
}
//检查目录写权限
if (@is_writable($save_path) === false) {
exit("返回错误: 上传目录没有写权限。($save_url)");
}
//检查是否已上传
if (@is_uploaded_file($tmp_name) === false) {
exit("返回错误: 临时文件可能不是上传文件。($file_name)");
}
//检查文件大小
if ($file_size > $max_size) {
exit("返回错误: 上传文件($file_name)大小超过限制。最大".($max_size/102400)."KB");
}
$temp_arr = explode(".", $file_name);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
if (in_array($file_ext, $ext_arr) === false) {
exit("返回错误: 上传文件扩展名是不允许的扩展名。");
}
echo "上传的文件: " . $file_name . "<br />";
echo "文件类型: " . $file_ext . "<br />";
echo "文件大小: " . ($file_size / 102400) . " Kb<br />";
echo "临时文件: " . $tmp_name . "<br />";
//创建文件夹
$ymd = date("Ymd");
$save_path .= $ymd . "/";
$save_url .= $ymd . "/";
if (!file_exists($save_path)) {
mkdir($save_path);
}
//移动文件
$file_path = $save_path . $file_name;
@chmod($file_path, 0644);//修改目录权限(Linux)
if (move_uploaded_file($tmp_name, $file_path) === false) {//开始移动
exit("返回错误: 上传文件失败。($file_name)");
}
}
function filekzm($a)
{
$c=strrchr($a,'.');
if($c)
{
return $c;
}else{
return '';
}
}
function getGet($v)// 获取GET
{
if(isset($_GET[$v]))
{
return $_GET[$v];
}else{
return '';
}
}
function getPost($v)// 获取POST
{
if(isset($_POST[$v]))
{
return $_POST[$v];
}else{
return '';
}
}
?> 展开
mb_http_input("UTF-8");
mb_http_output("UTF-8");
if(getGet('access2008_cmd')=='2'){
die('0');
}
if(getGet('access2008_cmd')=='3'){
die('1');
}
$php_path = dirname(__FILE__) . '/';
$php_url = dirname($_SERVER['PHP_SELF']) . '/';
//文件保存目录路径
$save_path = $php_path . './';
$save_url = $php_url . './';
$ext_arr = array('gif', 'jpg', 'jpeg', 'zip', 'rar', 'png', 'bmp');
$max_size = 102400*50000;//(默认500K)
$save_path = realpath($save_path) . '/';
//有上传文件时
if (empty($_FILES) === false) {
//原文件名
$file_name = $_FILES['Filedata']['name'];
//服务器上临时文件名
$tmp_name = $_FILES['Filedata']['tmp_name'];
//文件大小
$file_size = $_FILES['Filedata']['size'];
//检查文件名
if (!$file_name) {
exit("返回错误: 请选择文件。");
}
//检查目录
if (@is_dir($save_path) === false) {
exit("返回错误: 上传目录不存在。($save_path)");
}
//检查目录写权限
if (@is_writable($save_path) === false) {
exit("返回错误: 上传目录没有写权限。($save_url)");
}
//检查是否已上传
if (@is_uploaded_file($tmp_name) === false) {
exit("返回错误: 临时文件可能不是上传文件。($file_name)");
}
//检查文件大小
if ($file_size > $max_size) {
exit("返回错误: 上传文件($file_name)大小超过限制。最大".($max_size/102400)."KB");
}
$temp_arr = explode(".", $file_name);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
if (in_array($file_ext, $ext_arr) === false) {
exit("返回错误: 上传文件扩展名是不允许的扩展名。");
}
echo "上传的文件: " . $file_name . "<br />";
echo "文件类型: " . $file_ext . "<br />";
echo "文件大小: " . ($file_size / 102400) . " Kb<br />";
echo "临时文件: " . $tmp_name . "<br />";
//创建文件夹
$ymd = date("Ymd");
$save_path .= $ymd . "/";
$save_url .= $ymd . "/";
if (!file_exists($save_path)) {
mkdir($save_path);
}
//移动文件
$file_path = $save_path . $file_name;
@chmod($file_path, 0644);//修改目录权限(Linux)
if (move_uploaded_file($tmp_name, $file_path) === false) {//开始移动
exit("返回错误: 上传文件失败。($file_name)");
}
}
function filekzm($a)
{
$c=strrchr($a,'.');
if($c)
{
return $c;
}else{
return '';
}
}
function getGet($v)// 获取GET
{
if(isset($_GET[$v]))
{
return $_GET[$v];
}else{
return '';
}
}
function getPost($v)// 获取POST
{
if(isset($_POST[$v]))
{
return $_POST[$v];
}else{
return '';
}
}
?> 展开
4个回答
展开全部
修改这一行代码:
//移动文件
// $file_path = $save_path . $file_name;
$file_path = $save_path . microtime( TRUE ) . '.' . $file_ext;
原因:
windows和该代码的文件名编码不一致,windows是GB编码,你的代码是UTF编码,所以直接用文件原始文件名会导致乱码。
只要是文件上传的地方统统要修改文件名,客户端的文件名可以写在数据库里面。
//移动文件
// $file_path = $save_path . $file_name;
$file_path = $save_path . microtime( TRUE ) . '.' . $file_ext;
原因:
windows和该代码的文件名编码不一致,windows是GB编码,你的代码是UTF编码,所以直接用文件原始文件名会导致乱码。
只要是文件上传的地方统统要修改文件名,客户端的文件名可以写在数据库里面。
更多追问追答
追问
添加成功了,不过不是我要的效果,我不要把文件名更改了,我想要原来的中文名字来
追答
php文件存储在服务端,文件存储不能使用客户端的名字。
你想,两人都传了一个 a.doc 那第二个人的会覆盖第一个人的,但你一定是希望两个人的 a.doc 都保留下来对吧!
原来的名字你可以保存到数据库里面,在数据库里面记录下当前文件的原始名称是什么。
展开全部
看看数据库的编码格式是否与本页的编码格式是否一致?不一致的话可能会引发这种问题,另外中文一般的话都用GB2312的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在数据库代码里面 添加一句话 set names utf8,试试!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两个字。编码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询