图片上传与下载

原创 2016年06月01日 09:57:49

效果展示:


封装图片上传类file.class.php

<?php
class File{
    public $images;
    public $filename;
    public $allow_size;
    public function __construct($images,$filename,$allow_size){
        $this->images=$images;
        $this->filename=$filename;
        $this->allow_size=$allow_size;
    }
    //文件大小
    public function allow_size(){
        if($_FILES[$this->filename]['size']>$this->allow_size){
            echo "上传文件过大";
            return false;
        }
        return true;
    }
    //新的名字
    public function type(){
        $type=substr($_FILES[$this->filename]['name'],strrpos($_FILES[$this->filename]['name'],'.')+1);
        $name=time().rand(1000,9999).".".$type;
        return $name;
    }
    //放到一个新的文件
    public function move(){
        $name=$this->type();
        if(is_uploaded_file($_FILES[$this->filename]['tmp_name'])){
            @move_uploaded_file($_FILES[$this->filename]['tmp_name'],$this->images.$name);
            echo "<script>alert('添加图片成功')</script>";
            return $name;
        }else{
            echo "<script>alert('添加图片失败')</script>";
        }
    }
    //判断文件上传是否成功
    public function error(){
         if($_FILES[$this->filename]['error']==0){
            return true;
        }else if($_FILES[$this->filename]['error']==1){
             echo "文件的大小超过了php.ini中配置文件的大小";
             return false;
         }else if($_FILES[$this->filename]['error']==2){
             echo "文件中的配置大小有问题";
             return false;
         }else if($_FILES[$this->filename]['error']==3){
             echo "找不到文件的位置";
             return false;

         }
    }
}

封装数据库类mysql.class.php

<?php
class Mysql{
    public $db_link;
    public $db_address;
    public $db_user;
    public $db_pwd;
    public $db_name;
    //public function __construct(IP地址, 用户名, 密码, 数据库)
    public function __construct($address,$user,$pwd,$name){
        $this->db_address=$address;
        $this->db_user=$user;
        $this->db_pwd=$pwd;
        $this->db_name=$name;
        $this->connect();
    }
    //连接数据库
    public function connect(){
        $this->db_link=mysql_connect($this->db_address,$this->db_user,$this->db_pwd);
        mysql_select_db($this->db_name);
        mysql_query("set names utf8");
    }
    //进行 增删改
    public function dml($sql){
        $res=mysql_query($sql);
        if(!$res){
            echo"sql语句错误";
        }else{
            return $res;
        }
    }
    //进行多条数据的查询
    public function select_all($sql){
        $res=mysql_query($sql);
        if(is_resource($res) && mysql_affected_rows()>0){
            $arr=array();
            while($w=mysql_fetch_assoc($res)){
                $arr[]=$w;
            }
            return $arr;
        }else{
            return false;
        }
    }
    //进行单行数据进行查询
    public function select_one($sql){
        $res=mysql_query($sql);
        if(is_resource($res) && mysql_affected_rows()>0){
            return mysql_fetch_assoc($res);
        }else{
            return false;
        }
    }
    //将数据中的某一条数据进行删除  @parme : 表名  条件
    public function delete($table,$where){
        //$str=mysql_query($sql);
        $str="delete from $table where $where";
        return mysql_query($str);
    }
    //update table set name='fasf ' where  id=4;
    public function update1($table,$arr,$where){
        $str="";
        foreach($arr as $k=>$v){
            if(is_string($v)){
                $str=$str.$k.'="$v",';
            }else{
                $str=$str.$k."=".$v.",";
            }
        }
        $value=rtrim($str,',');
        $sql="update $table set $value where $where";
        return mysql_query($sql);
    }
    //添加一条数据insert into table(name,age) value('$name','$age');
    public function insert($table,$arr){
        $str1='';
        $str2='';
        foreach($arr as $k=>$v){
            $str1=$str1.$k.",";
            if(is_string($v)){
                $str2=$str2.'"'.$v.'",';
            }else{
                $str2=$str2.$v.',';
            }
        }
        $key=substr($str1,0,strlen($str1)-1);
        $value=substr($str2,0,strlen($str2)-1);
        $sql="insert into $table($key) value($value)";
        mysql_query($sql);
        return mysql_insert_id();
    }
    public function counts($sql){
        mysql_query($sql);
        return mysql_affected_rows();
    }
}
?>

文件上传表单

upload.php

<form action="upload.php" method="post" enctype="multipart/form-data">
    <meta charset="utf-8"/>
    <fieldset>
        <legend>用户上传信息</legend>
        <p>
            <label>姓名:</label>
            <input type="text" name="username" class="style">
        </p>
        <p>
            <label>密码:</label>
            <input type="text" name="pwd" class="style">
        </p>
        <p>
            <label>身份证号:</label>
            <input type="text" name="card1" class="style">
        </p>
        <p>
             <input type="file" name="filename" onchange="showPreview(this)" class="file" />
             <img id="portrait" src="" width="70" height="75">
        </p>
        <p>
            <input type="submit" value="上传" class="button">
        </p>
    </fieldset>
</form>
<script type="text/javascript">
    function showPreview(source) {
        var file = source.files[0];
        if (window.FileReader) {
            var fr = new FileReader();
            fr.onloadend = function(e) {
                document.getElementById("portrait").src = e.target.result;
            };
            fr.readAsDataURL(file);
        }
    }
</script>
<style>
     .button {  
        background-color: #4CAF50; /* Green */  
        border: none;  
        color: white;  
        padding: 15px 32px;  
        text-align: center;  
        text-decoration: none;  
        display: inline-block;  
        font-size: 16px;  
        margin: 4px 2px;  
        cursor: pointer;  
        box-shadow: 10px 10px 5px #888888;  
        border:2px solid;  
        border-radius:25px;  
    }
    .style{
        width: 200px;
        height: 50px;
        box-shadow: 2px 1px 3px red;  
        border:2px solid;  
        border-radius:25px;
        background: -webkit-linear-gradient(left, red, orange, yellow, green, blue, indigo, violet); /* Safari 5.1 - 6.0 */  
        background: -o-linear-gradient(left, red, orange, yellow, green, blue, indigo, violet); /* Opera 11.1 - 12.0 */  
        background: -moz-linear-gradient(left, red, orange, yellow, green, blue, indigo, violet); /* Firefox 3.6 - 15 */  
        background: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet);
    }
    img{
        border-radius: 50%;  
        max-width: 100%;  
        height: 85px;  
        width: 150px;  
        border:1px solid white;
    }  
    .file{
        background-color: blue; /* Green */  
        border: none;  
        color: white;  
        padding: 15px 32px;  
        text-align: center;  
        text-decoration: none;  
        display: inline-block;  
        font-size: 16px;  
        margin: 4px 2px;  
        cursor: pointer;  
        box-shadow: 10px 10px 5px #888888;  
        border:2px solid;  
        border-radius:25px;  
    }
    fieldset{
        background: url("./photo/14711621876232.jpg");  
        border:2px solid;  
        border-radius:25px;
    }
</style>



跳转添加方法upload.php

<?php
header('Content-type:text/html;charset=utf-8');
include "file.class.php";
include "mysql.class.php";
$a="./photo/";
$file=new File($a,'filename','1000000');
if($file->error()){
    if($file->allow_size()){
        $path=$file->move();       
        if($path){
            $username=$_POST['username'];
            $pwd=$_POST['pwd'];
            $card1=$_POST['card1'];
            $mysql=new Mysql('127.0.0.1','root','root','test');
            $sql=array('username'=>$username,'pwd'=>$pwd,'card1'=>$card1,'path'=>'./photo/'.$path);
            //print_r($sql);die;
           if($mysql->insert('file',$sql)){
               echo "<a href='uploading_show.php'>添加成功</a>";
           }else{
               echo "添加失败";
           }
        }
    }
}

最后一步,在目录下建立photo文件夹用来存储图片:

如果觉得对你们有帮助,请好评。


第二种上传方式:无刷新上传

建立index.html

<meta charset="utf-8" >
    <form id= "uploadForm">  
          <p >指定文件名: <input type="text" name="filename" value= ""/></p >  
           <p>
             上传文件: 
             <input type="file" name="photo" onchange="showPreview(this)" class="file" />
             <img id="portrait" src="" width="70" height="75">
          </p>  
          <input type="button" value="上传" onclick="doUpload()" />  
    </form>  
    <script src="http://www.haoyunyun.cn/jquery.js"></script>
    <script>
    function doUpload() {  
         var formData = new FormData($( "#uploadForm" )[0]);  
         $.ajax({  
              url: 'submit.php' ,  
              type: 'POST',  
              data: formData,  
              async: false,  
              cache: false,  
              contentType: false,  
              processData: false,  
              success: function (returndata) {  
                  alert(returndata);  
              },  
              error: function (returndata) {  
                  alert(returndata);  
              }  
         });  
    }  
    </script>
    <script type="text/javascript">
    function showPreview(source) {
        var file = source.files[0];
        if (window.FileReader) {
            var fr = new FileReader();
            fr.onloadend = function(e) {
                document.getElementById("portrait").src = e.target.result;
            };
            fr.readAsDataURL(file);
        }
    }
  </script>

2.建立submit.php

<?php
if($_FILES['photo']['error']>0){
    echo "上传文件失败";
    die;
}
$dir='./photo/';
$type=substr($_FILES['photo']['name'],strrpos($_FILES['photo']['name'],'.'));
$filename=time().rand(1000,9999).$type;
if(is_uploaded_file($_FILES['photo']['tmp_name'])){
    move_uploaded_file($_FILES['photo']['tmp_name'],$dir.$filename);
    echo "上传成功";
}else{
    echo "上传文件失败";
}

3.建立图片存放的位置。

4.两种上传图片方法完毕,希望对你们有所帮助


下载功能:

<?php
header("content-type:text/html;charset=utf-8");
$link=mysql_connect("127.0.0.1",'root','root');
mysql_select_db("php9",$link);
mysql_query("set names utf8");
//查询数据中的总条数
$sql="select count(id) as count from upload";
$arr=mysql_query($sql);
$result=mysql_fetch_assoc($arr);
//获得总条数
$size=$result['count'];
//每页显示2条数据
$length=6;
//计算出多少页
$pages=ceil($size/$length);
$page=isset($_GET['page'])?$_GET['page']:1;
if($page<=0){
    $page=1;
}
if($page>$pages){
    $page=$pages;
}
//数据从第几条开始
$start=($page-1)*$length;
$sql="select * from upload limit $start,$length";
$res=mysql_query($sql);
?>
<center>
<table border="1">
    <div>
        <?php
        while($a=mysql_fetch_assoc($res)){
            ?>
            <ul>
                <li><?php echo $a['id'] ?></li>
                <li><?php echo $a['username'] ?></li>
                <li><a href="photo.php"><img src="<?php echo $a['dir'] ?>" width="80px" ></a> </li>
                <li><?php echo $a['desc1'] ?></li>
                <li>
                    <a href="photo3.php?dir=<?php echo $a['dir'] ?>">下载</a>
                    <a href="photo4.php?id=<?php echo $a['id'] ?> && dir=<?php echo $a['dir'] ?>">删除</a>
                </li>
            </ul>
        <?php
        }
        ?>
    </div>
</table>
                        <a href="photo2.php?page=1">首页</a>
                        <a href="photo2.php?page=<?php echo $page-1  ?>">上一页</a>
                        <a href="photo2.php?page=<?php echo $page+1  ?>">下一页</a>
                        <a href="photo2.php?page=<?php echo $pages ?>">尾页</a>
</center>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    div{
        width:900px;
        height: 850px;
        border: 1px solid #28a4c9;
        margin: auto;
    }
    img{
        width: 200px;
        height: 130px;
        margin-left: 100px;
    }
    ul{
        width: 400px;
        height: 300px;
        float: left;
    }
    li{
        list-style: none;
        margin-left: 10px;
    }
</style>

<?php
header("content-type:text/html;charset=utf-8");
$dir=$_GET['dir'];
$filename=substr($dir,strrpos($dir,'/')+1);
header("Content-type:image");
header("content-disposition:attachment;filename=$filename");
readfile($dir);
?>



版权声明:本文为郝云原创文章,未经郝云允许不得转载。

相关文章推荐

图片上传在线剪裁下载

  • 2013年08月05日 23:52
  • 1.25MB
  • 下载

Silverlight 图片上传 下载 显示

  • 2012年03月22日 15:45
  • 427KB
  • 下载

图片上传和下载

简单的图片处理: /** * 上传头像 * * @param fileName * @param url * @return */ public static boole...

项目中第一次做图片上传和下载功能过程>>>

也是刚参加工作不久,被分配一个需求是做图片的上传和下载。项目是基于SSH框架的,对于不熟悉struts2和hibernate框架的我的实现过程就开始了。 当然我是从页面做起,首先在原本写好的页面表单中...

spring mvc 框架图片上传、下载案例

spring mvc 图片、音频上传  案列

megapix-image插件 使用Canvas压缩图片上传 MegaPixImage.js下载

megapix-image插件 使用Canvas压缩图片上传 MegaPixImage.js下载

图片上传时,QQ浏览器会弹出下载弹框的解决方案

在做这次的欢乐购车季项目中,出现了一个以前没有遇到的问题,就是点击上传按钮,QQ浏览器会弹出下载框,非常讨厌。从网上查了很多资料,虽然大家对QQ浏览器带给前端的麻烦是深恶痛绝,但是没办法,还得想办法解...

Spring文件上传下载and图片上传及前台显示

之前感觉图片上传下载不就是通过流的形式么,最近做起来还真是棘手啊,所以说有的是就得先做后想才对。   大体思路:把把图片存到文件夹中,然后把图片的名字存入数据库中。因公司用的Spring框架,所...

iOS开发-使用NSURLSession实现文件断点下载,文件离线续传以及图片上传

NSURLSession是iOS9.0后苹果推出的网络请求框架,用来代替NSURLConnecttion。本文章介绍了怎么使用NSURLSession实现GET,POST请求,以及文件断点下载和文件上...
  • Cehae
  • Cehae
  • 2016年11月13日 16:02
  • 609

上传下载,图片上传,图片下载

  • 2008年11月22日 21:53
  • 824KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图片上传与下载
举报原因:
原因补充:

(最多只允许输入30个字)