在blueimp fileupload jquery插件中将上传的文件名添加到数据库

时间:2013-06-19 07:28:47

标签: codeigniter blueimp jquery-file-upload

我希望有人对blueimp fileupload jquery插件有一些经验:https://github.com/blueimp/jQuery-File-Upload

如何将上传的文件名添加到数据库?

1 个答案:

答案 0 :(得分:3)

在选项数组中(查找$this->options = array( ) 并插入

'database' => 'database_name',  
'host' => 'localhost',  
'username' => 'user',  
'password' => 'password',  

然后

protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,
        $index = null, $content_range = null) {
    $file = new stdClass();
    $file->name = $this->get_file_name($name, $type, $index, $content_range);
    $file->size = $this->fix_integer_overflow(intval($size));
    $file->type = $type;</code></pre>

插入此代码

    //Start added coded
    // prepare the image for insertion
    $data = addslashes (file_get_contents($uploaded_file));

    // get the image info..
    $size = getimagesize($uploaded_file);     

    $file->upload_to_db = $this->add_img($data, $size, $name);

    //end added code

在函数handle_file_upload之后插入以下代码以实际将图像上传到数据库。

function query($query) {  
    $database = $this->options['database'];  
    $host = $this->options['host'];  
    $username = $this->options['username'];  
    $password = $this->options['password'];  
    $link = mysql_connect($host,$username,$password);  
    if (!$link) {  
        die(mysql_error());  
    }
    $db_selected = mysql_select_db($database);  
    if (!$db_selected) {  
        die(mysql_error());  
    }  
    $result = mysql_query($query);  
    mysql_close($link);  
    return $result;  
}  

function add_img($data,$size,$name)  
{  
    $add_to_db = $this->query("INSERT INTO your_database_name
            (image_type ,image, image_size, file_name)
            VALUES
            ('{$size['mime']}', '{$data}', '{$size[3]}', '{$name}')") or die(mysql_error());  
    return $add_to_db;  
}

如果您不希望将add_img($data,$size,$name)更改为add_img($size,$name)并且不传递$ data变量,则会将实际图像存储在数据库中。 $data变量应存储为中等或长blob。

您还可以将文件上传注释到目录内容,这样如果您没有将图像上传到目录,就不会出现错误。这是protected function handle_file_upload

//comment out file upload stuff since storing in database
    /*
    if ($this->validate($uploaded_file, $file, $error, $index)) {
        $this->handle_form_data($file, $index);
        $upload_dir = $this->get_upload_path();
        if (!is_dir($upload_dir)) {
            mkdir($upload_dir, $this->options['mkdir_mode'], true);
        }
        $file_path = $this->get_upload_path($file->name);
        $append_file = $content_range && is_file($file_path) &&
            $file->size > $this->get_file_size($file_path);
        if ($uploaded_file && is_uploaded_file($uploaded_file)) {
            // multipart/formdata uploads (POST method uploads)
            if ($append_file) {
                file_put_contents(
                    $file_path,
                    fopen($uploaded_file, 'r'),
                    FILE_APPEND
                );
            } else {
                move_uploaded_file($uploaded_file, $file_path);
            }
        } else {
            // Non-multipart uploads (PUT method support)
            file_put_contents(
                $file_path,
                fopen('php://input', 'r'),
                $append_file ? FILE_APPEND : 0
            );
        }
        $file_size = $this->get_file_size($file_path, $append_file);
        if ($file_size === $file->size) {
            $file->url = $this->get_download_url($file->name);
            list($img_width, $img_height) = @getimagesize($file_path);
            if (is_int($img_width) &&
                    preg_match($this->options['inline_file_types'], $file->name)) {
                $this->handle_image_file($file_path, $file);
            }
        } else {
            $file->size = $file_size;

            if (!$content_range && $this->options['discard_aborted_uploads']) {
                unlink($file_path);
                $file->error = 'abort';
            }
        }
        $this->set_additional_file_properties($file);
    }
    */