图片上传与下载

原创 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);
?>



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

ueditor插件在ie上传图片出现下载JSON文件的解决

在使用ueditor富文本插件进行上传图片的调试时,自定义了上传图片的上传和返回路径,代码如下: /** * ueditor上传图片重写 * * @param upfile * @...
  • rczrj
  • rczrj
  • 2017年06月15日 18:22
  • 571

jsp实现图片的上传和下载

将图片上传 1.添加使用jar包, jspSmartUpload.jar,并导包; 2.创建jsp页面,注意必须是“post”方式提交,form标签中一定要添加enctype=”multipart...
  • doaram123
  • doaram123
  • 2017年07月19日 11:47
  • 313

Android前段与后台服务器的图片上传与下载

由于公司决定用app作为显示端,本人自学android半年多几乎都是跟CSDN上的大神学习的~~ 为把这份传承的精神延续下去(瞬间高大上),个人总结了一套android与服务器图片的上传下载(第一次...
  • xqxqwps
  • xqxqwps
  • 2015年08月20日 09:13
  • 773

使用okhttp进行图片下载,上传,get,post网络请求

github源码地址:    https://github.com/AndroidDerek/IMoocDict 效果: 1连接网络: 2断开网络 依赖: compile ...
  • dianziagen
  • dianziagen
  • 2017年04月12日 17:24
  • 1198

php程序中实现图片的上传和下载

php中实现图片的上传 1、新建一个index.php用来编辑一个页面,实现图片的上传和下载的点击和视图功能 源代码:     图片的上传和下载       td{     text...
  • dataiyang321
  • dataiyang321
  • 2016年04月22日 19:50
  • 340

Java Web ---- 文件上传下载demo

fileupload.jsp 用表格呈现出文件上传的表单区域,可以添加删除,并保证序号一致 ...
  • a1610770854
  • a1610770854
  • 2016年10月03日 11:19
  • 2502

利用AsyncHttpClient实现图片的上传与下载

文件的上传
  • xinzheng_wang
  • xinzheng_wang
  • 2014年08月29日 15:11
  • 47204

利用AsyncHttpClient实现图片的上传与下载+进度条

利用AsyncHttpClient实现图片的上传与下载+  进度条 图片上传 [java] view plaincopy     ...
  • u010507199
  • u010507199
  • 2015年04月28日 14:47
  • 4355

使用图片服务器FastDFS实现图片上传

在工作中我们需要使用一台专门的服务器去管理系统的图片资源,这里介绍一种常用的FastDFS 服务器来实现图片的上传与加载 FastDFS架构包括Tracker server和Storage serv...
  • LM891108647
  • LM891108647
  • 2017年05月21日 21:07
  • 1949

微信js-sdk,选择图片,上传,下载到本地,php服务端

JS部分: //客户端6.0.2 wx.config({ //debug:true, appId: "{pigcms:$signPackage.appId}", timestamp: {pi...
  • moniteryao
  • moniteryao
  • 2015年09月13日 22:32
  • 3957
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图片上传与下载
举报原因:
原因补充:

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