文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP 实现网页文件上传 及 文件展示

2023-09-02 22:49

关注

目录

效果展示

部分内容及实现代码

文件上传

发送数据到当前页面  并使用php处理

 当提交空白表单时 需要用js提前处理 不进行提交

提交过后判断文件格式是否接受

展示文件

 获取文件地址

 开始展示文件

美化或优化

完整代码



 

没学过php  其中php内容全靠复制粘贴

创建./upload  文件夹 用来存储文件

用到的技术(一点即可)

html      css       javascript       php





文件上传

参考:PHP 文件上传 | 菜鸟教程 (runoob.com)

文件上传参考菜鸟教程    其中也有改变的地方

发送数据到当前页面  并使用php处理

 当提交空白表单时 需要用js提前处理 不进行提交

            



提交过后判断文件格式是否接受

if($_SERVER["REQUEST_METHOD"] == "POST" && empty($_POST["file"]) !== false){        $allowedExts = array("gif", "jpeg", "jpg", "png","zip","rar","tar",'tgz',"txt","xml","html","css","js");        $temp = explode(".", $_FILES["file"]["name"]);        // echo $_FILES["file"]["size"];        $extension = end($temp);     // 获取文件后缀名        if ((($_FILES["file"]["type"] == "image/gif")        || ($_FILES["file"]["type"] == "image/jpeg")        || ($_FILES["file"]["type"] == "image/jpg")        || ($_FILES["file"]["type"] == "image/pjpeg")        || ($_FILES["file"]["type"] == "image/x-png")        || ($_FILES["file"]["type"] == "image/png")        || ($_FILES["file"]["type"] == "application/octet-stream")        || ($_FILES["file"]["type"] == "application/x-tar")        || ($_FILES["file"]["type"] == "application/x-compressed")        || ($_FILES["file"]["type"] == "application/x-zip-compressed")        || ($_FILES["file"]["type"] == "text/plain")        || ($_FILES["file"]["type"] == "text/xml")        || ($_FILES["file"]["type"] == "text/html")        || ($_FILES["file"]["type"] == "text/css")        || ($_FILES["file"]["type"] == "text/javascript")        )        && ($_FILES["file"]["size"] < 20480000)           && in_array($extension, $allowedExts)){        if ($_FILES["file"]["error"] > 0){        echo "错误:: " . $_FILES["file"]["error"] . "
"; } else{ echo ' '; move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); } } else{ echo ' '; } }


常见文件类型

常用的MIME类型.doc     application/msword.docx   application/vnd.openxmlformats-officedocument.wordprocessingml.document.rtf       application/rtf.xls     application/vnd.ms-excel application/x-excel.xlsx    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.ppt     application/vnd.ms-powerpoint.pptx    application/vnd.openxmlformats-officedocument.presentationml.presentation.pps     application/vnd.ms-powerpoint.ppsx   application/vnd.openxmlformats-officedocument.presentationml.slideshow.pdf     application/pdf.swf    application/x-shockwave-flash.dll      application/x-msdownload.exe    application/octet-stream.msi    application/octet-stream.chm    application/octet-stream.cab    application/octet-stream.ocx    application/octet-stream.rar     application/octet-stream.tar     application/x-tar.tgz    application/x-compressed.zip    application/x-zip-compressed.z       application/x-compress.wav   audio/wav.wma   audio/x-ms-wma.wmv   video/x-ms-wmv.mp3 .mp2 .mpe .mpeg .mpg     audio/mpeg.rm     application/vnd.rn-realmedia.mid .midi .rmi     audio/mid.bmp     image/bmp.gif     image/gif.png    image/png.tif .tiff    image/tiff.jpe .jpeg .jpg     image/jpeg.txt      text/plain.xml     text/xml.html     text/html.css      text/css.js        text/javascript.mht .mhtml   message/rfc822

展示文件

想着图片之类的还展示图片  其他类型的使用文件名字 + 链接跳转过去 下载或其他

先用php获取文件地址   全部放到数组里   然后对数组遍历输出即可。

 获取文件地址

$prin = traverseDir('./upload');$num = count($prin);    function traverseDir($dirPath=false,$type='all'){    //检测是否为文件夹    if(!$dirPath||!is_dir($dirPath)){        return false;    }    $files = array();    //增加一个@抑制错误    if(@$handle = opendir($dirPath)){       while(($file=readdir($handle))!==false){           //排除'.'当前目录和'..'上级目录           if($file != '..' && $file != '.'){               //只记录文件               if($type == 'file'){                   if(is_dir($dirPath.DIRECTORY_SEPARATOR.$file)){                       //如果是文件夹,则重新遍历该文件的文件                       $files[$file] = traverseDir($dirPath.DIRECTORY_SEPARATOR.$file,'file');                       //把文件存入数组中                        foreach($files[$file] as $k => $v){if(is_file($v)){    $files[] = $v;    //删除源数组中的对应文件路径    unset($files[$file][$k]);}                        }                       //删除源数组中的对应文件路径数组                       unset($files[$file]);                   }else{                       //如果是文件则直接存入数组                       $files[] = $dirPath.DIRECTORY_SEPARATOR.$file;                   }               }else{//记录含文件                    if(is_dir($dirPath.DIRECTORY_SEPARATOR.$file)){                        //如果是文件夹,则重新遍历该文件的文件                        $files[$file] = traverseDir($dirPath.DIRECTORY_SEPARATOR.$file);                    }else{                        //如果是文件则直接存入数组                        $files[] = $dirPath.DIRECTORY_SEPARATOR.$file;                    }               }           }       }closedir($handle);    }    return $files;}

 开始展示文件

    for($i=0;$i<$num;++$i){            if($i%5==0){                echo '
    '; } $name = substr($prin[$i],9); if(strpos($name,'.png')!== false || strpos($name,'.jpg')!== false){ echo '
  • '; } else{ echo '
  • '.$name.'
  • '; } }


  1.  由于php发送表单时,会跳转到别的页面    两种方法解决

    一 使用ajax传输数据   可惜我不会

    二 跳转过去后   再使用js跳转过来 

  2. input的美化   

    可以使input标签隐藏  然后用另外的标签来代替input

    利用javascrip实现



 $v){if(is_file($v)){    $files[] = $v;    //删除源数组中的对应文件路径    unset($files[$file][$k]);}                        }                       //删除源数组中的对应文件路径数组                       unset($files[$file]);                   }else{                       //如果是文件则直接存入数组                       $files[] = $dirPath.DIRECTORY_SEPARATOR.$file;                   }               }else{//记录含文件                    if(is_dir($dirPath.DIRECTORY_SEPARATOR.$file)){                        //如果是文件夹,则重新遍历该文件的文件                        $files[$file] = traverseDir($dirPath.DIRECTORY_SEPARATOR.$file);                    }else{                        //如果是文件则直接存入数组                        $files[] = $dirPath.DIRECTORY_SEPARATOR.$file;                    }               }           }       }closedir($handle);    }    return $files;}echo 'beink    

来源地址:https://blog.csdn.net/qq_53950686/article/details/126928349

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯