php的文件上传及下载,附带显示文件及目录
主页面wenjianceshi.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件</title>
<link href="../FENGZHUANG/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="../FENGZHUANG/jquery-3.1.1.min.js"></script>
<script src="../FENGZHUANG/bootstrap/js/bootstrap.min.js"></script>
<style type="text/css">
*{
font-family:"微软雅黑";}
#wai{width:400px;
margin:0 auto;
padding:0px;}
#chuanshu{
width:400px;
margin:0 auto;
padding:0px;}
.waibtn{
width:100%;;
height:30px;}
.wjm,.wjbtn{
width:50%;
height:100%;
float:left;
}
</style>
</head> <body>
<div id="chuanshu">
<form role="form" action="upload.php" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="inputfile">文件输入</label>
<input type="file" name="file" id="inputfile">
</div>
<button type="submit" class="btn btn-default">上传</button>
</form>
</div>
<br /><br /><br />
<div id="wai">
<?php
session_start();
//定义目录
$fname = "./a";//需要显示的目录
if(!empty($_SESSION["fname"]))
{
$fname = $_SESSION["fname"];
} $pname = dirname($fname); //取上级目录 if(realpath($fname)=="D:\\wamp\\www\\lt\\a")//注意路径的匹配
{
}//到达了需要显示的最上层目录就不显示上一层标签了
else
{
echo "<button type='button' id='prev' class='btn waibtn btn-success' url='{$pname}'>返回上一层</button>";
}
//遍历目录下的所有文件显示
$arr = glob($fname."/*"); foreach($arr as $v)
{
$name = basename($v); //从完整路径中取文件名
$name = iconv("gbk","utf-8",$name);
if(is_dir($v))
{
echo "<button type='button' class='btn dir waibtn btn-primary' url='{$v}'>{$name}</button>";
}
else
{
echo "<button type='button' class='btn waibtn item btn-default' url='{$v}'><div class='wjm'>{$name}</div><div class='wjbtn'><a href='download.php? url={$v}'><input type='button' value='下载' url='{$v}' class='download btn btn-warning btn-xs' /></a> </div></button>";
}
} ?>
</div> </body> <script type="text/javascript">
$(".dir").click(function(){
var url = $(this).attr("url");
$.ajax({
url:"chuli2.php",
data:{url:url},
type:"POST",
dataType:"TEXT",
success: function(data){
window.location.href="wenjianceshi.php";
}
});
})
$("#prev").click(function(){
var url = $(this).attr("url");
$.ajax({
url:"chuli2.php",
data:{url:url},
type:"POST",
dataType:"TEXT",
success: function(data){
window.location.href="wenjianceshi.php";
}
});
})</script> </html>
显示:

上传处理页面upload.php
<?php if($_FILES["file"]["error"])
{
echo $_FILES["file"]["error"];
}
else
{ if($_FILES["file"]["size"]<10240000)
{
//防止文件名重复
$filename = "./a/".time().$_FILES["file"]["name"];
//转码
$filename = iconv("UTF-8","gb2312",$filename); if(file_exists($filename))
{
echo "该文件已存在";
}
else
{
//保存文件
move_uploaded_file($_FILES["file"]["tmp_name"],$filename);
header("location:wenjianchuanshu.php");
}
}
else
{
echo "文件类型不对";
}
}
点击选择文件之后选中了文件会显示:
点击上传即可。
下载处理页面download.php
<?php
$url = $_GET["url"];
$bname = basename($url);
header("Content-type:text/html;charset=utf-8");
$file_name="{$bname}";
//用以解决中文不能显示出来的问题
$file_name=iconv("utf-8","gb2312",$file_name);
$file_sub_path=$_SERVER['DOCUMENT_ROOT'];
$file_path="{$url}";
//首先要判断给定的文件存在与否
if(!file_exists($file_path)){
echo "没有该文件";
return ;
}
$fp=fopen($file_path,"r");
$file_size=filesize($file_path);
//下载文件需要用到的头
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".$file_name);
$buffer=10240000;
$file_count=0;
//向浏览器返回数据
while(!feof($fp) && $file_count<$file_size){
$file_con=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_con;
}
fclose($fp);
点击下载会弹出下载框,然后进行下载即可。
点击文件夹或者上一层的处理页面chuli2.php
<?php
session_start();
$url = $_POST["url"];
$_SESSION["fname"] = $url;
php的文件上传及下载,附带显示文件及目录的更多相关文章
- javaWeb实现文件上传与下载 (转)
文件上传概述 实现web开发中的文件上传功能,需完成如下二步操作: 在web页面中添加上传输入项 在servlet中读取上传文件的数据,并保存到本地硬盘中. 如何在web页面中添加上传输入项? < ...
- JavaWeb之文件上传和下载
在如今的互联网时代,人们越来越喜欢将自己的数据存放到互联网上,于是便诞生了很多类型的软件,比如360网盘,百度网盘,云盘之类的.所以说,文件上传和下载的功能是现在非常主流的一个功能,应用十分广泛. 那 ...
- java web学习总结(二十四) -------------------Servlet文件上传和下载的实现
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- struts2实现文件上传(多文件上传)及下载
一.要实现文件上传,需在项目中添加两个jar文件 二.上传准备的页面 注:必须植入enctype="multipart/form-data"属性,以及提交方式要设置成post &l ...
- (转载)JavaWeb学习总结(五十)——文件上传和下载
源地址:http://www.cnblogs.com/xdp-gacl/p/4200090.html 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传 ...
- JavaWeb学习总结,文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- java文件上传和下载
简介 文件上传和下载是java web中常见的操作,文件上传主要是将文件通过IO流传放到服务器的某一个特定的文件夹下,而文件下载则是与文件上传相反,将文件从服务器的特定的文件夹下的文件通过IO流下载到 ...
- 使用jsp/servlet简单实现文件上传与下载
使用JSP/Servlet简单实现文件上传与下载 通过学习黑马jsp教学视频,我学会了使用jsp与servlet简单地实现web的文件的上传与下载,首先感谢黑马.好了,下面来简单了解如何通过使用 ...
- JavaWeb学习总结(五十)——文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- 文件上传和下载(可批量上传)——Spring(三)
在文件上传和下载(可批量上传)——Spring(二)的基础上,发现了文件下载时,只有在Chrome浏览器下文件名正常显示,还有发布到服务器后,不能上传到指定的文件夹目录,如上传20160310.txt ...
随机推荐
- Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机
(1).虚拟化产品对比介绍 虚拟化技术有以下三种:仿真虚拟化,这是一种对系统硬件没有要求,但性能最低的虚拟化技术:半虚拟化,这是一种直接使用物理硬件,性能高,但需要修改内核的虚拟化技术:全虚拟化,这是 ...
- python flask框架学习(三)——豆瓣微信小程序案例(二)整理封装block,模板的继承
我们所要实现的效果: 点击电影的更多,跳转到更多的电影页面:点击电视剧的更多,跳转到更多的电视剧页面. 三个页面的风格相同,可以设置一个模板,三个页面都继承这个模板 1.在指定模板之前,把css放在一 ...
- 容器版Jenkins官方镜像 本身自带了 Java
docker版Jenkins官方镜像 本身自带了 Java
- 01点睛Spring MVC 4.1-搭建环境
转发:https://www.iteye.com/blog/wiselyman-2213906 1.1 简单示例 通篇使用java config @Controller声明bean是一个控制器 @Re ...
- 进程间通信之pipe
实现数据传递 两个进程之间通信 多个进程之间通信,会导致数据不安全,需要加锁,示例 分类 无名管道:父子间进程通信 有名管道:父子间进程通信:任意两个进程之间通信 创建管道方法 os.mkfifo(p ...
- 【GStreamer开发】GStreamer基础教程05——集成GUI工具
目标 本教程展示了如何在GStreamer集成一个GUI(比如:GTK+).最基本的原则是GStreamer处理多媒体的播放而GUI处理和用户的交互. 在这个教程里面,我们可以学到: 如何告诉GStr ...
- LeetCode 378. 有序矩阵中第K小的元素(Kth Smallest Element in a Sorted Matrix) 13
378. 有序矩阵中第K小的元素 378. Kth Smallest Element in a Sorted Matrix 题目描述 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩 ...
- 原生js 实现better-scroll效果,饿了么菜单内容联动,即粘即用
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Redis项目实战 .net StackExchange.Redis
StackExchange.Redis 免费.支持异步.用的最多 常用对象 源码地址:https://github.com/StackExchange/StackExchange.Redis 用 ...
- (一)Shiro,久闻其名,而今初相识
文章目录 shiro简介 功能介绍 从外部看 Shiro 架构 从内部看 Shiro 架构 多说一句,在学习shiro之前,我觉得应该先用 filter ,自己动手写过粗粒度的权限系统,而不要一上来就 ...