今天上傳、下載的程式碼要參考昨天的文章(標籤裡的name值)
https://ithelp.ithome.com.tw/articles/10271046
下面是上傳檔案的程式碼,檔案都會上傳到我專案資料夾底下的"uploads資料夾"
並在"uploads資料夾"底下再新增以帳號命名的資料夾 <<檔案就上傳在這。
裡面有幾個 $_FILES 開頭的程式碼,其實我都不太熟(很少用到它)
<?php
/*按下"點我上傳" 新增以帳號命名的資料夾*/
if(isset($_POST['COOK']))
{
//帳號名稱的資料夾 放在 "uploads/" 底下
$dirname = "uploads/".$_SESSION['auth_user']['user_id'];
if (!is_dir($dirname))
{
mkdir($dirname);
}
}
//下面的 $DE 是我對語法不熟(不知該怎麼用單雙引號、dot),為了方便後續撰寫
$DE = $_SESSION['auth_user']['user_id'];
/*上傳檔案:限制大小(10MB)、檔案類型(限定pdf)*/
@$img_size = $_FILES['stu_img']['size'];//變數前面的"@"是用來關閉警告提示
@$error = $_FILES['stu_img']['error'];
if ($error === 0 && $AA !="")
{
if ($img_size > 10485760)//限制檔案大小
{
$_SESSION['status'] = "注意!! 檔案過大 (最多 10MB)";
header("Location: index2.php");
}
else
{
if(isset($_POST['save_stu_img']))
{
$doc_type = @$_COOKIE["COOK01"];
// $phone = $_POST['stu_phone'];
$iamege = $_FILES['stu_img']['name'];
$allowed_exttension = array('pdf','PDF');
$filename_ex = $_FILES['stu_img']['name'];
$file_exttension = pathinfo($filename_ex ,PATHINFO_EXTENSION);
if(!in_array($file_exttension,$allowed_exttension))
{
$_SESSION['status'] = "檔案限定 : pdf";
header('Location: index2.php');
}
else
{
$FFILE = $_FILES['stu_img']['tmp_name'];
$DDEST = "uploads/$DE/".$_FILES["stu_img"]["name"];
//擋掉重複檔名的檔案,指定資料夾.你的檔案
if(file_exists("uploads/$DE/".$iamege = $_FILES['stu_img']['name']))
{
$filename = $_FILES['stu_img']['name'];
$_SESSION['status'] = "有相同名稱的檔案存在 : ".$filename;
header('Location: index2.php');
}
else
{
$query = "INSERT INTO document(stu_img,id,doc_type)
VALUES('$iamege','".$_SESSION['auth_user']['user_id']."','$doc_type')";
$query_run = mysqli_query($con,$query);
if($query_run)
{
move_uploaded_file($FFILE,$DDEST);
$_SESSION['status'] = "檔案上傳成功!";
setcookie("COOK01","", time()-1200);
header('Location: index2.php');
}
else
{
$_SESSION['status'] = "檔案上傳失敗!!!!!!";
header('Location: index2.php');
}
}
}
}
}
}
?>
下載的程式碼(有兩個部分,可搭配昨天列印)
首先是【a標籤】使用超連結下載
<a href="index2.php?downl_file=<?php echo $row['stu_img'] ?>">
<?php echo $row['stu_img']; ?>
</a>
再來是下載本身的程式碼
<?php
/*下載*/
if(!empty($_GET['downl_file'])){
$fileName = basename($_GET['downl_file']);
$filePath = "uploads/$DE/".$fileName;
if(!empty($fileName) && file_exists($filePath)){
//define header
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$fileName");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
ob_clean();//防止檔案損毀1
flush();//防止檔案損毀2
readfile($filePath);
exit;
}
else{
echo "檔案不存在";
}
}
?>
下次再弄刪除檔案(因為昨天列印的部分沒有弄到這一塊)
今天先這樣,下次見。