视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php上传文件名乱码了怎么办
2020-11-02 18:28:52 责编:小采
文档

php上传文件名乱码的解决办法:首先打开“Upload.html”文件;然后添加语句“enctype="multipart/form-data"”;接着打开“upload.php”文件;最后对文件名进行强制转码即可。

推荐:《PHP视频教程》

PHP上传文件和中文名乱码情况

关于PHP文件上传

在前端HTML页面,表单如下

Upload.html

<!doctype html>
<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport"
 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
 <input type="hidden" name="MAX_FILE_SIZE" value="2621114">
 <input type="file" required name="upload_file">
 <input type="submit" value="提交">
</form>
</body>
</html>

注意

enctype="multipart/form-data"一定要写,这是告诉浏览器你在上传什么东西

<input type="hidden" name="MAX_FILE_SIZE" value="2621114"> 前端设置文件大最大值

后端upload.php

<?php
if (is_uploaded_file($_FILES['upload_file']['tmp_name'])){
 $upfile = $_FILES['upload_file'];
 //print_r($upfile);
 $name = $upfile['name'];//获取文件名
 $type = $upfile['type'];//文件类型
 $size = $upfile['size'];//文件大小
 $tmp_name = $upfile['tmp_name'];//服务器存储的临时名称
 $error = $upfile['error'];//错误信息
 switch ($type){
 case 'image/png':
 $ok=1;
 break;
 case 'image/jpg':
 $ok=1;
 break;
 case 'image/jif':
 $ok=1;
 break;
 case 'image/jpeg':
 $ok=1;
 break;
 }
 if ($ok && $error == 0){
 move_uploaded_file($tmp_name,'./upload/'.iconv("UTF-8", "gbk",$name));
 echo '文件上传成功';
 }else{
 echo '文件上传失败';
 }
}

上传时,PHP收到关于该文件的信息数组,这些信息可以在$_FILES这个超级全局数组中找到。

如:如果表单中的文件输入框名字为upload_file,那么关于该文件的所有信息都包含在数组$_FILES['upload_file']里面。

is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的

move_uploaded_file — 将上传的文件移动到新位置

bool move_uploaded_file ( string $filename , string $destination )

当遇到中文文件名的时候,对文件名进行强制转码iconv("UTF-8", "gbk",$name),将UTF8转换成gbk,这样就不会出现乱码了

下载本文
显示全文
专题