zoukankan      html  css  js  c++  java
  • php mysql 数据库写入与读取取文件

    近期的项目由于特殊原因,需要将文件存到数据库中。今天特地测试,首先在php网站上传文件,将文件读取出来——再存入到MySQL数据库中。

    一、首先创建php 代码如下(网上找了段代码进行过修改):源代码 http://blog.csdn.net/jonathanlin2008/article/details/6185162

    <?php
    /**
     * Created by PhpStorm.
     * User: yun
     * Date: 2015/7/10
     * Time: 22:04
     */
    //echo md5('ggHScquI8EzIPSwV');
    
    if($_SERVER['REQUEST_METHOD'] == 'POST'){
        $myfile=$_FILES['myfile'];
       /* echo file_get_contents($myfile['tmp_name']);
        exit;*/
    if($myfile != "none" && $myfile != "") { //有了上传文件了
    
        //设置超时限制时间,缺省时间为 30秒,设置为0时为不限时
        $time_limit=60;
        set_time_limit($time_limit); //
    
        //名字,大小,文件格式,
        $file_name=$myfile['name'];
        $file_size=$myfile['size'];
        $file_type=strstr ( $file_name, '.' );
    
        //把文件内容读到字符串中  直接在读取的临时文件,因为不需要将文件放到目录中。
        $fp=fopen($myfile['tmp_name'],  "rb");
        if(!$fp) die("file open error");
        $file_data = addslashes(fread($fp, $file_size));
        fclose($fp);
    
    
       /* $dbh = new PDO ( 'mysql:host=192.168.1.168;port=3306;dbname=testdb;', 'root', '123' );*/
    
    
        /*下面是将pdo进行了一个简单的封装*/
        $userclass = dirname(__FILE__) . '/source/module/User.php';
        require_once($userclass);
        $user = new User();
    
        /*t_testfile 表中file字段数据类型为longblod*/
        $sql="insert into t_testfile (file) values ('$file_data')";
        $result=$user->db->doSql($sql);
    
        //下面这句取出了刚才的insert语句的id
        $id=$user->db->getLastId();
    
        echo "上传成功--- ";
        echo "<a href='show_info.php?id=$id'>显示上传文件信息</a>";
    }
    else {
        echo "你没有上传任何文件";
    }
    }
    
    /* function  doSql($sql, $model = 'many', $debug = false)
    {
        if ($debug) echo $sql;
        $this->sth = $this->dbh->query($sql);
        $this->getPDOError();
        $this->sth->setFetchMode(PDO::FETCH_ASSOC);
        if ($model == 'many') {
            $result = $this->sth->fetchAll();
        } else {
            $result = $this->sth->fetch();
        }
        $this->sth = null;
        return $result;
    }*/
    ?>
    
    
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>测试文件上传并存入到MySQL数据库中</title>
        <script src="../js/jquery-1.8.3.min.js"></script>
    
    </head>
    <body>
      <div>
          <form enctype='multipart/form-data' name='myform' action='uploadtest.php' method='post'>
                <input type="file" id="myfile" name="myfile" />
              <input type="submit" id="btnupload" value="上传文件"/>
          </form>
      </div>
    </body>
    </html>
    

     二、遇到问题:文件大于php默认大小是,上传获取不到文件,直接报“你没有上传任何文件”

      所以:调整php.ini配置文件中的参数,后重启Apache服务。

         调整的变量:

    file_uploads = On ;        #打开文件上传选项

    upload_max_filesize = 500M ;   #上传文件上限

    #如果要上传比较大的文件,仅仅以上两条还不够,必须把服务器缓存上限调大,把脚本最大执行时间变长

    post_max_size = 500M ;    #post上限

    max_execution_time = 1800 ;      #Maximum execution time of each script, in seconds脚本最大执行时间

    max_input_time = 1800 ;     #Maximum amount of time each script may spend parsing request data

    memory_limit = 128M ;      #Maximum amount of memory a script may consume (128MB)内存上限

    三、点击上传又出现一个问题。MySQL server has gone away,由于英语很菜,直接有道翻译:‘MySQL服务器已经消失’

    百度(还是要感谢百度,和广大牛人的分享)让我找到了解决方法,不至于迷失很久。

    MySQL server has gone away解决方法:http://www.cnblogs.com/cenalulu/archive/2013/01/08/2850820.html

  • 相关阅读:
    对this的浅解
    Java设计模式---工厂模式学习笔记
    MyBatis入门
    Java设计模式---单例模式学习笔记
    java设计模式--七大原则
    Servlet request常用方法
    maven中导入jdbc的坑
    Servlet生命周期
    JQuery选择器
    Test
  • 原文地址:https://www.cnblogs.com/cyun/p/4665685.html
Copyright © 2011-2022 走看看