美文网首页
PHP在MySql中存取文件

PHP在MySql中存取文件

作者: ResearchWorld | 来源:发表于2016-08-27 16:15 被阅读0次

先建张表

create table if not exists binary_files(
id int(4) unsigned not null auto_increment primary key,
file_name varchar(250) not null,
file_data longblob not null);

PHP中测试

<?php
header('Content-type:text/html;charset=utf-8');

if( $_FILES['myfile'][error] === 0){
    if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
        echo "{$_FILES['myfile']['tmp_name']}"."文件大小:".filesize($_FILES['myfile']['tmp_name']);
        
        if( $read_file_handle = fopen($_FILES['myfile']['tmp_name'],'r') ){
            $read_buffer = fread($read_file_handle,filesize($_FILES['myfile']['tmp_name']));

            try{
            $pdo = new PDO('mysql:dbname=files;host=localhost','root','123456');
            }catch(PDOException $e){
                die('connect mysql fail'.$e->getMessage());
            }
                        //向表中插入文件数据
            $pdostmt = $pdo->prepare('insert into binary_files (file_name,file_data) values(?,?)');
            $pdostmt->execute(array($_FILES['myfile']['name'],$read_buffer));
            $read_buffer = '';
            
            @fclose($read_file_hanle);
            @unlink($_FILES['myfile']['tmp_name']);
            
            if( !file_exists('savefiles')){
                mkdir('savefiles');
            }
            
            //从数据库中读取文件,在输出 看看对不对
            $pdostmt = $pdo->prepare('select file_data from binary_files where file_name=?');
            $pdostmt->execute(array($_FILES['myfile']['name']));
            $fetch_result = $pdostmt->fetch(PDO::FETCH_ASSOC);
            $put_buffer = $fetch_result['file_data'];
            echo $put_buffer;
            file_put_contents('./savefiles/'.$_FILES['myfile']['name'],$put_buffer);
        }   
    }
}

相关文章

网友评论

      本文标题:PHP在MySql中存取文件

      本文链接:https://www.haomeiwen.com/subject/cfhtettx.html