网校上http://www.runoob.com/php/php-file-upload.html的教程可用。
我自己写的代码如下create-[project.php,也就是网校上的upload
<?php
//中文
header("Content-type: text/html; charset=utf-8");
//上传文件代码开始
if ($_FILES["file"]["error"] > 0)
{
echo "请上传附件:: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";//第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
// 判断当期目录下的 jungongziliao目录是否存在该文件
// 如果没有 jungongziliao 目录,你需要创建它,upload 目录权限为 777
if (file_exists("fujian/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " 文件已经存在。 ";
}
else
{
// 如果 images 目录不存在该文件则将文件上传到 fujian 目录下
move_uploaded_file($_FILES["file"]["tmp_name"], "../fujian/" .iconv("UTF-8", "gbk",$_FILES["file"]["name"]));
echo "文件存储在: " . "fujian/" . $_FILES["file"]["name"];
//将文件保存路径上传到数据库中
$uploaddir = "fujian/";//设置文件保存目录 注意包含/
$name = $_FILES["file"]["name"];
$uploadfile=$uploaddir.$name;
}
//上传文件代码结束
$servername = "127.0.0.1";
$username = "root";
$password = "";
$dbname = "mydb";
//创建连接
$conn = new mysqli($servername, $username, $password,$dbname);//new MySQLi(主机,账号,密码,数据库,端口号);
//检测连接是否成功
if ($conn->connect_error) {
die("连接数据库失败: " . $conn->connect_error);
}
echo "连接数据库成功";
echo "<br>";
//向数据库myDB中的Projects表插入数据
$sql = "INSERT INTO project (Project_name, Project_id, Qvxian,Type,Start_name,Start_gps,End_name,End_gps,Reasons,Situation,url)
VALUES ('$_POST[name]', '$_POST[no]', '$_POST[qvxian]','$_POST[kind]','$_POST[start_name]', '$_POST[start_gps]', '$_POST[end_name]','$_POST[end_gps]','$_POST[reasons]','需求提出','$uploadfile')";
if ($conn->query($sql) === TRUE)
{
echo "新记录插入成功";
}
else
{
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
?>
发现问题,只要文件名包含中文,结果虽然能采集到文件名,但是move_uploaded_file报错,这是因为它无法识别中文。
当遇到中文文件名的时候,对文件名进行强制转码iconv("UTF-8", "gbk",$name),将UTF8转换成gbk,这样就不会出现乱码了,如下
move_uploaded_file($_FILES["file"]["tmp_name"], "../fujian/" .iconv("UTF-8", "gbk",$_FILES["file"]["name"]));