php上传文件中文文件名乱码的解决方法
文件上传是我们在处理表单提交时候最常用的功能之一,今天写了一个小小的demo,如下:
先看结构:

html为表单提交的页面,php为处理表单的文件,upload为上传文件所放的位置
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="file_updata.php" method="post" enctype="multipart/form-data">
<label for="files">文件上传</label>
<input type="file" id="files" name="file">
<br/>
<input type="submit" name="submits" value="提交">
</form> </body>
</html>
php:
$file = $_FILES["file"];
if ($file["error"] > 0) {
echo "错误:" . $file["error"];
} else {
echo "文件名称:" . $file["name"] . "</br>";
echo "文件类型:" . $file["type"] . "</br>";
echo "文件大小:" . ($file["size"] / 1024) . "K</br>";
echo "文件临时存储的位置:" . $file["tmp_name"] . "</br>"; //保存上传的文件
if (file_exists("upload" . $file["name"])) {
echo $file["name"] . "文件已经存在";
} else {
//如果目录不存在则将该文件上传 move_uploaded_file($file['tmp_name'], "upload/" . $file["name"]);
echo '文件上传成功!'; }
}
我上传了个.txt的文件,如下:

执行:

可以看到十分的顺利,那看看结果吧 :

此时上传的文件是我们想要的,但是却出现了乱码的情况,嗯,好,那就来解决吧,:
首先,在php文件的头部加这么一段代码:
header("Content-type: text/html; charset=utf-8");
然后定义一个变量:
$name = iconv('utf-8','gb2312',"upload/".$file["name"]);
好,那我们看看整个的PHP页面:
header("Content-type: text/html; charset=utf-8");
$file = $_FILES["file"];
if($file["error"]>0){
echo "错误:".$file["error"];
}else{
$name = iconv('utf-8','gb2312',"upload/".$file["name"]);
echo "文件名称:".$file["name"]."</br>";
echo "文件类型:".$file["type"]."</br>";
echo "文件大小:".($file["size"]/1024)."K</br>";
echo "文件临时存储的位置:".$file["tmp_name"]."</br>";
//保存上传的文件
if(file_exists("upload".$file["name"])){
echo $file["name"]."文件已经存在";
}else{
//如果目录不存在则将该文件上传
if(move_uploaded_file($file['tmp_name'],$name)){
// move_uploaded_file($file['tmp_name'],"upload/".$file["name"]);
echo '文件上传成功!';
echo '图片信息:';
print_r($file);
}
}
运行:

完美
php上传文件中文文件名乱码的解决方法的更多相关文章
- 上传文件中文文件名乱码的解决方法以及iconv函数的使用
http://www.jb51.net/article/14530.htm 一般客户端是什么格式就展示什么格式,比如浏览器的UTF-8,windows的GBK
- WebUploader 上传插件结合bootstrap的模态框使用时选择上传文件按钮无效问题的解决方法
由于种种原因(工作忙,要锻炼健身,要看书,要学习其他兴趣爱好,谈恋爱等),博客已经好久没有更新,为这个内心一直感觉很愧疚,今天开始决定继续更新博客,每周至少一篇,最多不限篇幅. 今天说一下,下午在工作 ...
- asp.net限制了上传文件大小为..M,解决方法
asp.net限制了上传文件大小为4M,在:在web.config里加下面一句,加在<System.web></System.web>之间如下:<system.web&g ...
- ubuntu14.04中解压缩window中的zip文件,文件名乱码的解决方法
在windows上压缩的文件,是以系统默认编码中文来压缩文件.由于zip文件中没有声明其编码,所以linux上的unzip一般以默认编码解压,中文文件名会出现乱码. 通过unzip行命令解压,指定字符 ...
- nginx 服务器在上传文件出现413代码的解决方法
打开nginx主配置文件nginx.conf 找到http{}段,添加client_max_body_size 20m;
- Linux - xshell上传文件报错乱码
xshell上传文件报错乱码,解决方法 rz -be 回车 下载sz filename
- restTemplate.postForObject上传文件中文乱码(???.xls)
一.问题描述 项目中, 使用restTemplate上传文件时, 文件名中文乱码, 一串问号, 源文件名为: 测试中文乱码哦哦哦.zip, 通过restTemplate.postForObject调用 ...
- 用c#读取文件内容中文是乱码的解决方法:
用c#读取文件内容中文是乱码的解决方法: //方法1: StreamReader din = new StreamReader(@"C:\1.txt", System.Text.E ...
- springBoot上传文件时MultipartFile报空问题解决方法
springBoot上传文件时MultipartFile报空问题解决方法 1.问题描述: 之前用spring MVC,转成spring boot之后发现上传不能用.网上参考说是spring boot已 ...
随机推荐
- ibtais中把clob数据类型转换成string并插入到数据库中
1,在xml中定义一个parameterMap <parameterMap id="stringToClob" class="com.a.b.c"> ...
- 一款基于jquery固定于顶部的导航
今天给大家分享一款基于jquery固定于顶部的导航,这款导航当浏览器滚动条位于顶部时,导航高度较高,当浏览器滚动向下滚动时,导航高度自动减低,并位于顶部.效果图如下: 在线预览 源码下载 实现的代 ...
- RocketMQ集群搭建
1.RocketMQ介绍 1.1. 简介 RocketMQ 是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅 ...
- SQL Server 2008 压缩日志
USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECO ...
- sendmsg/recvmsg和struct msghdr
函数原型 #include <sys/types.h> #include <sys/socket.h> ssize_t sendmsg(int sockfd, const st ...
- iOS边练边学--简单的数据操作(增、删、改),左滑动删除和弹窗
一.数据刷新的原则: 通过修改模型数据,来修改tableView的展示 先修改数据模型 在调用数据刷新方法 不要直接修改cell上面子控件的属性 二.增删改用到的方法: <1>重新绑定屏幕 ...
- Entity Framework管理实体关系(二):管理一对二关系
在上一篇文章中,简单的介绍了使用Fluent API如何管理一对一的实体关系,在这篇文章中,接着介绍Fluent API如何管理一对多的实体关系. 要在数据库中配置一对多关系,我们可以依赖EF约定,还 ...
- dubbo 常见错误 通配符的匹配很全面, 但无法找到元素 'dubbo:application' java.lang.reflect.MalformedParameterizedTypeException 通配符的匹配很全面, 但无法找到元素 'dubbo:application' 的声明。 Unsupported major.minor version 52.0 (unable to l
dubbo 常见错误 1. Caused by: java.lang.reflect.MalformedParameterizedTypeException 启动时报错,原因是dubbo 依赖 spr ...
- rails中render 和 redirect_to的区别, each只能用在数组中,如果只有一个或者零个项,用each方法会报错undefined method `each' for #...
在render中,即使有:action,那么也仅仅是取对应的view中的模板(html.erb)而已,所以这里即使浏览器中的url是/orders/xcreate,但是显示的界面是/app/views ...
- 在hibernate中查询单个对象的方法,get()、load()、
查询单个对象可以直接通过Session对象来做到,其中session这个对象提过了2种获得单个对象的方法,一个是get方法和load方法,我去看这个两个方法的时候发现这两个方法的参数是一样的,使用方式 ...