在mysql数据库中存储路径以进行多次拖放上传

时间:2012-09-01 08:22:38

标签: php mysql file file-upload upload

我一直在关注这个tutorial并且效果很好,但我想将每个图像的路径存储在mysql数据库中。我的代码是

$upload_dir = 'uploads/';
$allowed_ext = array('jpg','jpeg','png','gif');


if(strtolower($_SERVER['REQUEST_METHOD']) != 'post'){
exit_status('Error! Wrong HTTP method!');
 }


if(array_key_exists('pic',$_FILES) && $_FILES['pic']['error'] == 0 ){

$pic = $_FILES['pic'];

if(!in_array(get_extension($pic['name']),$allowed_ext)){

            exit_status('Only '.implode(',',$allowed_ext).' files are allowed!');
}   

if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){


    exit_status('File was uploaded successfuly!');
}

 }

 exit_status('Something went wrong with your upload!');


// Helper functions

function exit_status($str){
echo json_encode(array('status'=>$str));
exit;
}

function get_extension($file_name){
$ext = explode('.', $file_name);
$ext = array_pop($ext);
return strtolower($ext);
}

循环文件并将路径插入mysql数据库的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

由于问题的性质,我将首先创建表来存储上传图像的名称。

CREATE TABLE IF NOT EXISTS `images` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;  

上表只包含这几个字段,但如果您认为还需要更多字段,可以随时在表格中添加其他字段。
现在是PHP部分。

$upload_dir = 'uploads/';
$allowed_ext = array('jpg','jpeg','png','gif');

// create the PHP Data Object to communicate with your MySQL database
$host = 'localhost';
$dbname = 'db_name';  // the database name in which you've created the above table  
$user = 'username';  // replace with your username
$pass = 'password';  // same goes for password
$db = new PDO("mysql:host=$host;db=$dbname", $user, $pass);  

if(strtolower($_SERVER['REQUEST_METHOD']) != 'post'){
    exit_status('Error! Wrong HTTP method!');
}

if(array_key_exists('pic',$_FILES) && $_FILES['pic']['error'] == 0 ){

    $pic = $_FILES['pic'];

    if(!in_array(get_extension($pic['name']),$allowed_ext)){
        exit_status('Only '.implode(',',$allowed_ext).' files are allowed!');
    }   

    if($demo_mode){

        // File uploads are ignored. We only log them.

        $line = implode('       ', array( date('r'), $_SERVER['REMOTE_ADDR'], $pic['size'], $pic['name']));
        file_put_contents('log.txt', $line.PHP_EOL, FILE_APPEND);

        exit_status('Uploads are ignored in demo mode.');
    }

    // Move the uploaded file from the temporary
    // directory to the uploads folder:

    if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){
        // now insert the data in the database
        $stm = "INSERT INTO images (name,date) VALUES (:name,:date)";
        $query = $db->prepare($stm);
        $query->execute(array(':name'=>$pic['name'], 
                              ':date'=>date("Y-m-d H:i:s", time())
                              )
                        );
        exit_status('File was uploaded successfuly!');
    }

}

exit_status('Something went wrong with your upload!');

// Helper functions
// .....