今天上传、下载的程序码要参考昨天的文章(标签里的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 "档案不存在";
}
}
?>
下次再弄删除档案(因为昨天列印的部分没有弄到这一块)
今天先这样,下次见。
<<: OpenTelemetry 与 Jaeger 应用 - 2
>>: [Day 10] 模型达到商业指标的挑战 — Test set performance 的殒落
昨天,我们透过session成功让使用者不用重复登入 可是有可能有人需要切换帐户之类的。 所以今天我...
有时候难免要使用一些资源档 步骤分为 新增 & 使用 新增 在方案总管的专案上右键 选属性 ...
大家好,我是一名菜鸟工程师,这篇文章用来记录我工作遇到的需求及解决方式,如果有更好的解决方式,也欢迎...
交出来的程序最少都要有headerfile(.h)档和mainfile(.cpp)档这两个档案才行,...
终於来到倒数的第三篇了,今天来讲讲如何产生 API 文件,我自己觉得 RESTful API 的缺点...