图片上传与下载

效果展示:


封装图片上传类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);
?>



阅读更多
版权声明:本文为郝云原创文章,未经郝云允许不得转载。 https://blog.csdn.net/haoyunyun888/article/details/51553729
个人分类: php smarty类
想对作者说点什么? 我来说一句

图片chuli类

2014年05月19日 6KB 下载

asp.net图片上传下载

2008年11月19日 5KB 下载

图片上传插件 bootstrap-fileinput

2017年08月25日 245KB 下载

Silverlight 图片上传 下载 显示

2012年03月22日 427KB 下载

SSM图片上传

2017年12月11日 773KB 下载

jquery 本地上传图片预览Demo

2010年08月04日 46KB 下载

基于java的图片上传以及显示

2010年03月29日 20KB 下载

java servlet实现图片上传下载

2017年02月14日 2.14MB 下载

没有更多推荐了,返回首页

不良信息举报

图片上传与下载

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭