【问题标题】:Upload file to mySQL Database. Help with code将文件上传到 mySQL 数据库。代码帮助
【发布时间】:2023-03-20 07:41:02
【问题描述】:

好的,所以我在将文件作为 blob 插入数据库时​​遇到了问题。我可以将文件上传到数据库上的文件夹,但我现在想将文件作为 blob 插入到我的数据库中。我知道这通常不好,但我想这样做。无论如何,我想知道是否有人有任何 PHP 代码可以将文件插入到 blob 表中?我试过用这个无济于事,也许我只是没有写 SQL 语句吧?

<?php 
 $target = "./"; 
 $target = $target . basename( $_FILES['uploadedfile']['name']); 
 $file=($_FILES['uploadedfile']['name']); 
 if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
 echo "The file ".  basename( $_FILES['uploadedfile']['name']).
 " has been uploaded";
 }else{
 echo "There was an error uploading the file, please try again!";
 }
 mysql_connect("localhost","root","");
 mysql_select_db("ivrsupport");
 $sql=mysql_query("insert into CUSTOMER (AUDIO_FILE)values
   ('$file') where PHONE_NUMBER = ('15555215554')");
 $r=mysql_query($sql);
 if(!$r){
 echo "Error in query: ".mysql_error();
 }  
mysql_close();  
?> 

【问题讨论】:

  • 从我在您的问题中可以看到,您实际上并没有读取文件数据,只是将其下载到您的服务器,并尝试在该数据库列中插入文件名。上面链接的帖子向您展示了如何从磁盘读取文件并将其插入到 blob 中。右侧的“相关”链接将告知您对此的一些限制。

标签: php mysql blob


【解决方案1】:

我会避免在数据库中存储文件。这就是 FileSystems 的用途,并且在这方面做得更好。博客圈中有数以百万计的帖子解释了为什么不这样做。即使对于一个小型应用程序,我也不会这样做。就是觉得脏。数据库中的 blob 不包含有关文件本身的元数据,作为 FS,可以通过多种方式查询文件大小、修改时间、权限等信息……我的 $0.02

【讨论】:

  • 我认为这就是我现在的发展方向。谢谢!
【解决方案2】:

你需要将文件读入一个变量,然后插入它。只给它文件名是不行的。

$fp      = fopen($basename, 'r');
$content = fread($fp, filesize($basename));
fclose($fp);

$sql=mysql_query("insert into CUSTOMER (AUDIO_FILE)values
   ('$content') where PHONE_NUMBER = ('15555215554')");

【讨论】:

    【解决方案3】:

    $file 只包含文件的名称而不是它的内容。

    尝试以下方法:

    <?php 
     $target = "./"; 
     $target = $target . basename( $_FILES['uploadedfile']['name']); 
     $file=($_FILES['uploadedfile']['name']); 
     $fileContents = file_get_contents($file);
     if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
     echo "The file ".  basename( $_FILES['uploadedfile']['name']).
     " has been uploaded";
     }else{
     echo "There was an error uploading the file, please try again!";
     }
     mysql_connect("localhost","root","");
     mysql_select_db("ivrsupport");
     $sql=mysql_query("insert into CUSTOMER (AUDIO_FILE)values
       ('$fileContents') where PHONE_NUMBER = ('15555215554')");
     $r=mysql_query($sql);
     if(!$r){
     echo "Error in query: ".mysql_error();
     }  
    mysql_close();  
    

    【讨论】:

      猜你喜欢
      • 2013-08-15
      • 1970-01-01
      • 2011-09-12
      • 2010-11-21
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多