PHP在mysql数据库中插入文件

时间:2013-03-25 16:44:55

标签: php mysql

在我当前的代码中,我只插入文件的文件名,文件存储在一个文件夹中。 我还想将文件存储在我的mysqldatabase中。我怎么能这样做。

我的桌子:     ID     文件名     fcontent(longblob)

include 'db.php';
if(isset($_FILES['image'])){
    $errors= array();
    $tablename = "files";
    $file_name = $_FILES['image']['name'];
    $file_size =$_FILES['image']['size'];

    $file_tmp =$_FILES['image']['tmp_name'];
    $content =$_FILES['image']['fcontent']; // content in database

    $sql="INSERT INTO $tablename(file_name,content)VALUES('" . mysql_real_escape_string($file_name) . "')"; // here i need to insert the content i assume

    $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); //convert to lower

$extensions = array("jpeg","jpg","png","txt","html","php","gif");   // File extension that are 

allowed 

if(in_array($file_ext,$extensions )=== false){ // check if value exists in array
     $errors[]="extension not allowed.";


    }
    if($file_size > 2097152){ // cant be greater than 2mb
    $errors[]='File size must be excately 2 MB';

    }               
    if(empty($errors)==true){
        mysql_query($sql);
        move_uploaded_file($file_tmp,"upload/".$file_name); 

        echo "Success";
        header("location:files.php"); // Send back to main page

    }else{
        print_r($errors);
 }

}
?>      

4 个答案:

答案 0 :(得分:4)

就我而言,我不建议将图像存储在数据库中,原因如下: - 管理太重。 - 缺乏速度(虽然很多图像,如果它们很重)。

所以我建议你把图像放在一个目录,它的属性(类型,大小,作者......),当然还有它们到数据库中目录的链接,

答案 1 :(得分:3)

目前我可以想到两种方式

1.使用

BLOB       
MEDIUMBLOB 
LONGBLOB   

mysql中的数据类型... 使用file_get_contents()获取内容并插入内容

  1. 使用

      text
    

    数据类型..对内容进行编码,然后保存内容..

  2. 或者,您只能存储文件的路径...就像存储http://domain/img.jpg 在表格列

答案 2 :(得分:0)

一个例子:

  $link = mysqli_connect("localhost", "root", "");
  mysqli_select_db($link, "mydb"); 

  $stmt = $link->prepare("insert into myfile (id, arq) values (?, ?)");

  $stmt->bind_param("ss", $id, $file);

  $id = 5;
  $file = file_get_contents("C:\\myfile.png");

  $stmt->execute();

如果您想通过某种HTML表单(enctype='multipart/form-data')上传文件,请更改行

  $file = file_get_contents("C:\\myfile.png");

  $file = file_get_contents($_FILES['myFileName']['tmp_name']);

myFileName中的$_FILES['myFileName']是输入文件html元素的名称。

答案 3 :(得分:-1)

你有什么问题?关于这个问题有很多主题,一个是this