【问题标题】:How to store file path in database using php?如何使用php将文件路径存储在数据库中?
【发布时间】:2017-11-04 18:49:47
【问题描述】:

我有两个 php 页面 adp3.php(表单页面)和 adp4.php(将内容上传到数据库)

adp3.php:

<form method="POST" enctype="multipart/form-data">
 <label>SUBJECT:</label><select name="subject">
 <?php 
$query="SELECT * FROM subject WHERE SyllabusID=".$batch1." and SemID=".$sems."";
$result=mysqli_query($con, $query);
//loop
foreach($result as $subject){
?>
<option value="<?php echo $subject['SubjectID']."-".$subject['SubjectName']; ?>"><?php echo $subject['SubjectName']; ?></option>
<?php
}
?>
  </select>
   <br>
DATE: <select name="date">
    <option>MAY/JUNE</option>
    <option>NOV/DEC</option>
    </select>

    <p color="white">YEAR: <input  type="varchar" name="year"/></p></br>

    <p color="white">PAPER LINK: <input  type="file" name="file"/></p></br>
         <br>
         <button formaction="adp4.php" class="btn-login">GO</button>

adp4:

<?php
$date =$_POST['date'];
$year=$_POST['year'];
$file=$_FILES['file'];

    if($date && $year)
    { mysql_connect("localhost","root","") or die("we couldnt connect");
       mysql_select_db("dbmsproj");
        $result=mysql_query("INSERT INTO paper(SubjectID,Date,Dlink) values('$subid','$date $year','$file')");

      ?>  <p color="white"><?php echo "Paper SUCCESSFULLY ADDED TO THE DATABASE";
    }
    else
    {?>
        <p color="white"><?php echo  "ALL FIELDS NEED TO BE FILLED ";
    }
        ?>

除了文件路径(在文件路径字段中显示“数组”)之外,数据库中的所有内容都已正确输入。请帮助

更新:(问题已解决)谢谢你们帮助我。我的代码终于可以工作了。你们是最好的

【问题讨论】:

  • 您必须使用move_uploaded_file() 手动将文件放入您的目录,然后插入数据库字段的路径
  • 我不会存储路径,只存储文件名。路径可能会改变,如果您最终在某个时候移动了一些东西,您将不需要更新所有这些记录。 (或使用符号链接,哎呀)例如,在我的工作中,我们在数据库中存储了 90k pdf,在过去的 4 年中,我们已经迁移了 3 台服务器。 (和一个域名)
  • 我推荐的另一件事是使用哈希重命名文件。 (如 sha1 )然后将其保存到带有时间戳和哈希的文件系统 time().hash().pdf 然后将用户的文件名(原始名称)保存在数据库中(这样你就可以假装它的名字)。您不会相信 PPL 放入文件名中的垃圾文件,所有类型的东西都会弄乱您的 URL 等等。我什至有人将'" 放在文件名中,这很糟糕。为什么请参阅stackoverflow.com/questions/28504839/…
  • 哦,好的,我会试试????
  • 谢谢????????????????现在我的代码终于可以工作了。你是最好的

标签: php mysql


【解决方案1】:

尝试使用 $_POST['file'] 而不是使用 $_FILE,因为您只需要知道文件路径

编辑:

对于文档,$_FILES[] 返回一个数组,其中包含有关您上传的文件的所有信息。 使用此数组,您可以使用文件路径获取临时名称

$file=$_FILES['file']['temp_name'];

以上代码将为您提供上传文件在服务器内的相关临时名称

另请参阅:PHP Documentation

为了进一步检查,这些是存储在数组中的数据(至于 PHP 文档):

$_FILES['userfile']['name']

客户端计算机上文件的原始名称。

$_FILES['userfile']['type']

文件的 mime 类型(如果浏览器提供了此信息)。一个例子是“image/gif”。然而,这种 mime 类型在 PHP 端没有被检查,因此不要认为它的价值是理所当然的。

$_FILES['userfile']['size']

上传文件的大小,以字节为单位。

$_FILES['userfile']['tmp_name']

上传文件存储在服务器上的文件的临时文件名。

$_FILES['userfile']['error']

与此文件上传相关的错误代码。

【讨论】:

  • 那太好了!永远记得遵循文档。他们大多拥有你想知道的一切
  • 是的,他们确实如此 ? 再次感谢您帮助我。这样我的 php 项目就完成了??
【解决方案2】:

首先检查您要插入的内容: 通过这个。

print_r($_FILES["file"]);

【讨论】:

  • 非常感谢.. ??? 因为你们,我的所有代码终于可以正常工作了
【解决方案3】:

检查一下这可能会有所帮助。

$filePath = realpath($_FILES["file"]["tmp_name"]);

【讨论】:

    【解决方案4】:

    如果您访问文件名,则必须这样做

    $file = $_FILES["file"]["name"];

    【讨论】:

    • 但我想要文件路径。 ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2014-03-29
    相关资源
    最近更新 更多