
批改狀態(tài):合格
老師批語:實際工作中, 可能不會用到這么的判斷, 框架都已經(jīng)封裝的很好了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件操作</title>
</head>
<body>
<h2>文件上傳</h2>
<!--文件上傳必須是post類似-->
<form action="demo.php" method="post" enctype="multipart/form-data">
<!-- name: 最終會成為php中的$_FILES['my_file']-->
<input type="file" name="my_file">
<button>上傳</button>
</form>
</body>
</html>
<?php
//文件上傳的原理
// 1. 配置上傳參數(shù)
$fileType = ['jpg', 'png', 'gif'];
$fileSize = 3145728;
$filePath = '/uploads/';
// 原始文件名
$fileName = $_FILES['my_file']['name'];
// 臨時文件名
$tempFile= $_FILES['my_file']['tmp_name'];
//2. 判斷是否上傳成功?判斷是否上傳成功
$uploadError = $_FILES['my_file']['error'];
if ($uploadError > 0 ) {
switch ($uploadError) {
case 1:
case 2: die('上傳文件過大');
case 3: die('文件上傳不完整');
default: die('未知錯誤');
}
}
// 3. 判斷文件擴展名是否支持?
$extension = explode('.', $fileName)[1];
if (!in_array($extension, $fileType)) {
die('不允許上傳 ' . $extension . '文件類型');
}
// 4. 生成不可重復(fù)的臨時文件名
$fileName = date('YmdHis',time()).md5(mt_rand(1,99)). '.' . $extension;
// 5. 文件上傳
if (is_uploaded_file($tempFile)) {
if (move_uploaded_file($tempFile, __DIR__ . $filePath . $fileName)) {
echo "上傳成功";
} else {
die('上傳失敗');
}
} else {
die('非法操作');
}
exit;
了解了文件上傳的代碼該如何寫。
文件上傳,需要滿足預(yù)設(shè)的條件(類型,大小等),文件會先上傳到臨時文件地址(檢測文件夾是否存在,不存在就創(chuàng)建),然后再將臨時文件移動到此磁盤的過程(判斷文件使用是否是由post方法提交)。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號