PHP上传和下载与删除doc、docx、ppt、pdf文件

来源:互联网 发布:网络大电影的受众 编辑:程序博客网 时间:2024/05/17 03:01

####################html代码###################################

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<h1>上传</h1>
<form action="doc.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="action" value="upload"></input>
    <input type="file" name="file"></input>
    <input type="submit" value="提交"></input>
</form>
<h1>下载</h1>
<a href="doc.php?action=download&filepath=file/20170701-595700d535f09.doc">doc下载</a><br>
<a href="doc.php?action=download&filepath=file/20170701-595700f41e339.docx">docx下载</a><br>
<a href="doc.php?action=download&filepath=file/20170701-595751502f738.pdf">pdf下载</a><br>
<a href="doc.php?action=download&filepath=file/20170701-5957013400166.ppt">ppt下载</a><br>
</body>
</html>

######################PHP代码#############################

<?php
$action = $_REQUEST['action'];
switch ($action) {
    case 'upload':
        $file  = $_FILES['file'];
        $tmp_name = $file['tmp_name'];
        $type     = substr($file['name'], strrpos($file['name'],'.')+1);
        $dir      = "./file/";
        if(!is_dir($dir)){
            mkdir($dir);
        }
        $filename = date("Ymd").'-'.uniqid();
        switch ($type) {
            case 'pdf':
                if(move_uploaded_file($file['tmp_name'], $dir.$filename.'.pdf')){
                    $filepath = "picdata/pic/file/$filename.pdf";
                    echo "<script>alert('上传成功')</script>";
                }else{
                    echo "<script>alert('上传失败,请重新上传')</script>";
                    exit();
                }
            break;
            case 'doc':
                if(move_uploaded_file($file['tmp_name'], $dir.$filename.'.doc')){
                    $filepath = "picdata/pic/file/$filename.doc";
                    echo "<script>alert('上传成功')</script>";
                }else{
                    echo "<script>alert('上传失败,请重新上传')</script>";
                    exit();
                }
            break;
            case "docx":
                if(move_uploaded_file($file['tmp_name'], $dir.$filename.'.docx')){
                    $filepath = "picdata/pic/file/$filename.docx";
                    echo "<script>alert('上传成功')</script>";
                }else{
                    echo "<script>alert('上传失败,请重新上传')</script>";
                    exit();
                }
            break;
            case "ppt":
                if(move_uploaded_file($file['tmp_name'], $dir.$filename.'.ppt')){
                    $filepath = "picdata/pic/file/$filename.ppt";
                    echo "<script>alert('上传成功')</script>";
                }else{
                    echo "<script>alert('上传失败,请重新上传')</script>";
                    exit();
                }
            break;
            default:
                echo "<script>alert('只能上传pdf、doc、docx、ppt格式的文件')</script>";
                exit();
            break;
        }
    break;
    case 'download':
        $filepath  = $_REQUEST['filepath'];
        $dir       = "./file/";
        $filename  = substr($filepath, strrpos($filepath,'/')+1);//文件名称
        $type      = substr($filepath, strrpos($filepath,'.')+1);//文件后缀
        switch ($type) {
            case 'pdf':
                if(file_exists($dir.$filename)){
                    //打开文件,获得句柄
                    $file = fopen($dir . $filename,"r");
                    header('Content-Type: application/force-download');
                    //返回的文件类型
                    Header("Content-type:application/pdf");
                    //按照字节大小返回
                    Header("Accept-Ranges: bytes");
                    //返回文件的大小
                    Header("Accept-Length: ".filesize($dir . $filename));
                    //这里对客户端的弹出对话框,对应的文件名
                    Header("Content-Disposition: attachment; filename=" .$filename);
                    //修改之前,一次性将数据传输给客户端
                    echo fread($file, filesize($dir.$filename));
                    //修改之后,一次只传输1024个字节的数据给客户端
                    //向客户端回送数据
                    $buffer=1024;
                    //判断文件是否读完
                    while (!feof($file)) {
                        //将文件读入内存
                        $file_data=fread($file,$buffer);
                        //每次向客户端回送1024个字节的数据
                        echo $file_data;
                    }
                    //关闭文件句柄
                    fclose($file);
                }else{
                    echo "<script>alert('文件不存在')</script>";
                    echo "<script>window.location='doc.html'</script>";
                }
            break;
            case 'doc':
                if(file_exists($dir.$filename)){
                    $file = fopen($dir . $filename,"r"); // 打开文件 // 输入文件标签
                    header('Content-Type: application/force-download');
                    header('Content-Type:application/msword');
                    Header("Accept-Ranges: bytes");
                    Header("Accept-Length: ".filesize($dir . $filename));
                    Header("Content-Disposition: attachment; filename=" .$filename); // 输出文件内容
                    echo fread($file, filesize($dir.$filename));
                    $buffer=1024;
                    while (!feof($file)) {
                        $file_data=fread($file,$buffer);
                        echo $file_data;
                    }
                    fclose($file);
                }else{
                    echo "<script>alert('文件不存在')</script>";
                    echo "<script>window.location='doc.html'</script>";
                }
            break;
            case 'docx':  
                if(file_exists($dir.$filename)){  
                    $file = fopen($dir . $filename,"r"); // 打开文件 // 输入文件标签
                    header('Content-Type: application/force-download');  
                    header('Content-Type:application/vnd.openxmlformats');
                    Header("Accept-Ranges: bytes");
                    Header("Accept-Length: ".filesize($dir . $filename));
                    Header("Content-Disposition: attachment; filename=" .$filename); // 输出文件内容
                    echo fread($file, filesize($dir.$filename));
                    $buffer=1024;
                    while (!feof($file)) {
                        $file_data=fread($file,$buffer);
                        echo $file_data;
                    }
                    fclose($file);
                }else{
                    echo "<script>alert('文件不存在')</script>";
                    echo "<script>window.location='doc.html'</script>";
                }
            break;
            case 'ppt':  
                if(file_exists($dir.$filename)){
                    $file = fopen($dir . $filename,"r"); // 打开文件 // 输入文件标签
                    header('Content-Type: application/force-download');
                    header('Content-Type:application/vnd.ms-powerpoint');
                    Header("Accept-Ranges: bytes");
                    Header("Accept-Length: ".filesize($dir . $filename));
                    Header("Content-Disposition: attachment; filename=" .$filename); // 输出文件内容
                    echo fread($file, filesize($dir.$filename));
                    $buffer=1024;
                    while (!feof($file)) {
                        $file_data=fread($file,$buffer);
                        echo $file_data;
                    }
                    fclose($file);
                }else{
                    echo "<script>alert('文件不存在')</script>";
                    echo "<script>window.location='doc.html'</script>";
                }
            break;
        }
    break;

}

##########删除文件###############

$dh = opendir($dir);
while (($file = readdir($dh)) !== false){
      if($file != '.' && $file != '..'){
                    if($file == $filename){
                        unlink($dir.$filename);
                    }
                }
     }

closedir($dh);


原创粉丝点击