PHP はファイルのアップロードを実装します (アップロードされたファイルを保存します)

必要とする:

1. ファイル形式に制限があります

2. アップロードしたファイルを保存します 

2. アップロードしたファイルを保存するファイルは、年、月、日ごとに保存する必要があります。

3. 接続テーブルの追加

//プロジェクトのディレクトリ構造

test
|-----upload # ファイルアップロード用ディレクトリ
|-----index.html # フォームファイル
|-----index.php # PHP アップロードコード

まず、idnex.html にアップロード フォームを作成します。 

<form action="index.php" method="post" enctype="multipart/form-data">
	 <label for="file">文件名:</label>
	 <input type="file" name="file" id="file"><br>
	 <input type="submit" name="submit" id="submit" value="提交">
</form>

 Index.php にアップロード スクリプトを作成し、このアップロードに接続テーブルを追加しました。

<?php

// 连接数据库 mysqli_connect() 三个参数分别是 mysql服务器主机地址 mysql用户名 mysql用户名密码
$conn = mysqli_connect('', '', '');
mysqli_query($conn , "set names utf8");
mysqli_select_db($conn,'');


//  获取年月日
$y = date("Y");
$m = date("m");
$d = date("d");

// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
// echo $_FILES["file"]["size"];
$extension = end($temp);     // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)   // 小于 200 kb
&& in_array($extension, $allowedExts))
{
	if ($_FILES["file"]["error"] > 0)
	{
		echo "错误:: " . $_FILES["file"]["error"] . "<br>";
	}
	else
	{	
		// 判断当期目录下的 upload 目录是否存在该文件
		// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
		if (file_exists("upload/" . $_FILES["file"]["name"]))
		{
			echo json_encode([
				'code'=>0,
				'msg'=>"文件重复上传。",
				'data'=>[]
			]);
		}
		else
		{
			$path = "upload/";
			$pathY = $path . "/" . $y;
			$pathM = $pathY . "/" . $m;
			$pathD = $pathM . "/" .$d;
			if(!is_dir($pathY)){
				mkdir($pathY,0755,true);
			};
			if(!is_dir($pathM)){
				mkdir($pathM,0755,true);
			};
			if(!is_dir($pathD)){
				mkdir($pathD,0755,true);
			};
			// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
			$dsy = $pathD . "/" . $_FILES["file"]["name"];
			move_uploaded_file($_FILES["file"]["tmp_name"],$dsy);
			$spl = "insert into image (url) values ('$dsy')";
			$retavls = mysqli_query($conn,$spl);
				if($retavls){
					echo json_encode([
					'code'=>1,
					'msg'=>"上传成功",
					'data'=>['img'=>$dsy]
				]);
			};
		}
	}
}
else
{
	echo json_encode([
		'code'=>3,
		'msg'=>"非法的文件格式",
		'data'=>[]
	]);
}
?>

おすすめ

転載: blog.csdn.net/m0_74265396/article/details/132869148