您的位置:首页 > 编程语言 > PHP开发

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

2017-07-01 17:34 1871 查看
####################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);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: