图片上传下载

思路:

  1、创建图片上传的存放目录

    /uploads/

  2、index.php  //浏览页面,提供上传表单 

上传表单:文件上传必须使用enctype="multipart/form-data",且用post提交
<form action="doupload.php" enctype="multipart/form-data" method="post">
浏览图片
<th>序号</th><th>图片</th><th>上传时间</th><th>操作</th>
<?php
     //1、打开目录uploads
$dir = "./uploads/";
if(is_dir($dir)){      //is_dir:判断是否是一个目录
$dh = opendir($dir);

    //2、遍历目录输出图片信息
$i=0;
while(false !== ($file = readdir($dh))){       //while ($file = readdir($handle)) 是错误的遍历方法
if($file != "." && $file != ".."){            //列出当前目录的所有文件并去掉.和..
$i++;

echo "<td><img src='{$dir}{$file}' width='80' height='50'></td>";    //输出图片
echo '<td>'.date("Y-m-d H:i:s", filectime($dir.$file)).'</td>';
echo "<td><a href='{$dir}{$file}'>查看</a>&nbsp;
<a href='download.php?name={$file}'>下载</a></td>";

  //3、关闭目录
closedir();

  3、doupload.php  //图片上传

  //1、获取上传文件信息

$upfile = $_FILES["pic"];
$typelist = array("image/jpeg", "image/png", "image/gif");      //定义允许的类型
$path = "./uploads/";      //定义上传后的目录

  //2、过滤上传文件错误号
if($upfile["error"] > 0){
switch ($upfile["error"]){    //error:1、2、3、4、6、7

  //3、本次上传大小过滤
if($upfile['size'] > 2000000){

  //4、类型过滤
if(!in_array($upfile["type"], $typelist)){

  //5、上传文件重命名(随机获取一个文件名,保留后缀名)
$fileinfo = pathinfo($upfile["name"]);    //pathinfo:解析上传文件名字
do{
  $newfile = date("Y-m-d").rand(1000, 9999).".".$fileinfo["extension"];
}while(
  file_exists($path.$newfile)
);

  //6、执行文件上传
if(is_uploaded_file($upfile["tmp_name"])){    //判断是否是一个上传文件

if(move_uploaded_file($upfile["tmp_name"], $path.$newfile)){  //移动上传文件

  4、download.php  //图片下载功能

  //1、获取要下载的图片名(加上路径)
$file = "./uploads/".$_GET["name"];
  //2、重设响应类型
$info = getimagesize($file);      //获得图像大小
  //3、指定下载的文件名
header("Content-Disposition:attachment;filename=".$_GET["name"]);
  //4、制定文件的大小
header("Content-length:".filesize($file));
  //5、响应内容
readfile($file);      //输出一个文件

PHP.20-图片上传下载的更多相关文章

  1. JSP+Servlet中使用jspsmartupload.jar进行图片上传下载

    JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post&quo ...

  2. WebApi2 文件图片上传下载

    Asp.Net Framework webapi2 文件上传与下载 前端界面采用Ajax的方式执行 一.项目结构 1.App_Start配置了跨域访问,以免请求时候因跨域问题不能提交.具体的跨域配置方 ...

  3. Android开发中使用七牛云存储进行图片上传下载

    Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储 ...

  4. [iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]

    简单的JSON的HTTP传输就不说了,看一个简单的DEMO吧. 主要明白parameters是所填参数,类型是字典型.我把这部分代码封装起来了,以便多次调用.也许写在一起更清楚点. #pragma m ...

  5. 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)

    举个例子,有人对着我们的公共微信号拍个照片发送过来,然后我们处理这个照片,比如进行ocr识别字(随后就会降到这个例子),或者人脸识别,或者拍照取证等,这些功能都是相当有用的.那么我们现在就要分析一下这 ...

  6. .Net Core 图片文件上传下载

    当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. ...

  7. JSP+Servlet中使用cos.jar进行图片上传(文件上传亦然)

    链接:JSP+Servlet中使用jspsmartupload.jar进行图片上传下载 关于cos.jar,百度百科只有这么几句话(http://baike.baidu.com/subview/406 ...

  8. 【转载】【JAVA秒会技术之图片上传】基于Nginx及FastDFS,完成图片的上传及展示

    基于Nginx及FastDFS,完成商品图片的上传及展示 一.传统图片存储及展示方式 存在问题: 1)大并发量上传访问图片时,需要对web应用做负载均衡,但是会存在图片共享问题 2)web应用服务器的 ...

  9. Linux上传下载神器之 lrzsz

    在开发的过程中,经常遇到 需要在 Linux 和 Windows 之间上传下载文件的情况 这时,一般都是使用 FTP 或者 WinSCP 工具进行上传下载, 虽然也能解决问题,但是这些工具需要在本地安 ...

随机推荐

  1. Swift自适应布局(Adaptive Layout)教程(一)

    通用的stroyboard文件是通向自适应布局光明大道的第一步.在一个storyboard文件中适配iPad和iPhone的布局在iOS8中已不再是梦想.我们不必再为不同尺寸的Apple移动设备创建不 ...

  2. SPFieldLookupValue class

    using System; using Microsoft.SharePoint; namespace ConsoleApp { class Program { static void Main(st ...

  3. union和struct的区别之处,在于内存的共享上

    首先看看union,在c++中,union可能没有多大用处,在c语言中,可能我们要借助其完成很多巧妙的设计,下面是其一个完整的定义: union UTest         {             ...

  4. 利用C语言编辑画图程序的实现方法

    不知道大家在进行开发县级电网调度自动化系统的时候,是否都会遇到一个问题就是:要绘制一个电力系统一次接线图.大家都应该知道其实电力系统的一次接线图是较为复杂的,如果想要使用一般的编程方法来进行绘制的话, ...

  5. ARM实验3 ——串口实验

    uart串口实验 实验内容: 编写UART模块程序,通过串口将信息打印到终端. 实验目的: 熟悉开发环境的使用. 掌握exynos4412处理器的UART功能. 实验平台: FS4412开发板,ecl ...

  6. Arduino-串口函数Serial

    串口是Arduino与其它设备进行通信的接口,我们需要很好的掌握它的使用.Arduino串口使用相关的函数共有10个(随着版本的升级,新版本加入了更多,具体请参见官网:http://www.ardui ...

  7. 寄生构造函数模式 js

    有一点需要说明:首先返回的对象与构造函数或者构造函数的原型属性之间没有关系,也就是说构造函数返回的对象与在构造函数外部创建的对象没有什么不同,为此不能依赖 instanceof 操作符来确定对象类型. ...

  8. Flashing Fluorescents(状压DP)

    Flashing Fluorescents 时间限制: 1 Sec  内存限制: 128 MB提交: 56  解决: 19[提交] [状态] [讨论版] [命题人:admin] 题目描述 You ha ...

  9. spring中使用i18n(国际化)

    简单了解i18n i18n(其来源是英文单词internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称.在资讯领域,国际化(i18n)指让产品(出版物,软件,硬件 ...

  10. 微信H5单页面滑动的时候如何避免出界,出现头部和底部的黑底?

    ios系统微信浏览器.safari浏览器中h5页面上拉下滑导致悬浮层脱离窗口的解决方法 ios偶现下拉出现黑底时,界面第一次上拉时拉不动的解决方案: document.querySelector('# ...