在sql中保存多个图像上传的文件路径

时间:2014-07-21 04:21:40

标签: php sql database image forms

我使用以下代码上传多个图片上传到服务器中的文件夹,每个文件将被重命名为随机方法现在我需要的是我只想存储图像文件路径SQL数据库这里是我的代码

<?php
class Upload_Rename{
const ALLOWED_TYPES = "jpg,gif,png";
public static function   generate_new_name($extension,$uppercase=true,$prefix='',$sufix=''){
    $new_name = $prefix.uniqid().'_'.time().$sufix;
    return ($uppercase ? strtoupper($new_name) : $new_name).'.'.$extension;
}
public static function check_and_get_extension($file){
    $file_part      = pathinfo($file);
    $allowed_types  = explode(",",Upload_Rename::ALLOWED_TYPES);
    if(!in_array($file_part['extension'], $allowed_types)){
        throw new Exception('Not ok.. bad bad file type.');
    }
    return $file_part['extension'];
}
public function upload($file,$target_destination){
    if(!isset($file['tmp_name'])){
        throw new Exception('Whaaaat?');
    }
    $_name   = $file['name'];
    $_tmp    = $file['tmp_name'];
    $_type   = $file['type'];
    $_size   = $file['size'];
    $file_extension = '';
    try{
        $file_extension = Upload_Rename::check_and_get_extension($_name);
    }catch(Exception $e){
        throw new Exception('Ops.. file extension? what? '.$e->getMessage());
    }
    $new_name    =   Upload_Rename::generate_new_name($file_extension,true,'whaat_','_okey');
    $destination = $target_destination . DIRECTORY_SEPARATOR . $new_name;
    return move_uploaded_file($_tmp, $destination);
}
public function multiple_files($files,$destination){
    $number_of_files = isset($files['tmp_name']) ? sizeof($files['tmp_name']) : 0;
    $errors = array();
    for($i=0;$i<$number_of_files;$i++){
        if(isset($files['tmp_name'][$i]) && !empty($files['tmp_name'][$i])){
            try{
                $this->upload(array(
                    'name'=>$files['name'][$i],
                    'tmp_name'=>$files['tmp_name'][$i],
                    'size'=>$files['size'][$i],
                    'type'=>$files['type'][$i]
                ),$destination);
            }catch(Exception $e){
                array_push($errors,array('file'=>$files['name'][$i],'error'=>$e->getMessage()));
            }
        }
    }
    print_r($errors);
}
}
if($_FILES){
$upload = new Upload_Rename();
$destination ='upload/';
$upload->multiple_files($_FILES['myfile'],$destination);
}
?>

<form  method="post" enctype="multipart/form-data">
<?php for($i=0;$i<10;$i++): ?>
file: <input type="file" name="myfile[]"><br>
<?php endfor; ?>
<input type="submit">
</form>

我需要在SQL中存储图像路径以在另一个PHP页面中检索它

1 个答案:

答案 0 :(得分:0)

您应该在mysql表中创建一个列。 让我们说你的名字是image_path。 我将在这里向您展示的是伪代码,因此您必须根据需要进行调整。 我可以看到你有方法

public function multiple_files($files,$destination)

如果成功则会抛出异常,我认为返回true。 您应该做的是创建一个方法来保存您在DB中的路径,在字段image_path。

所以,在这部分之后:

$destination ='upload/';
$upload->multiple_files($_FILES['myfile'],$destination);    

添加新创建的方法,例如savePath($路径)

$path = $destination . '/' . $file_name;
$this->savePath($path)

你应该好好去。 因为我不知道你是如何处理你的数据库连接并记录那部分应该在你身上。

祝你好运 弗拉基米尔