【问题标题】:save image / file information in a mysql database [duplicate]将图像/文件信息保存在mysql数据库中[重复]
【发布时间】:2016-10-05 13:44:28
【问题描述】:

我写了这段代码来上传我的mysql数据库中的文件信息:

<?php
require __DIR__ . '/database.php'; 

$file = $_GET["item"];

$itemName = $_GET["itemName"];
$uploadDate = filectime($file);
$filePathArray = pathinfo($file);
$filePath = $filePathArray["filename"];

$stmt = db()->prepare("INSERT INTO items (id, itemName, uploadDate, filePath) VALUES ('','{$itemName}','{$uploadDate}','{$filePath}"); 
$stmt->execute();  
?>

HTML代码:

<form action="upload_action.php">
  Item Name:<br>
  <input type="text" name="itemName"><br>
   File:<br>
  <input type="file" name="item"><br>
  <input type="submit" name="submit">
</form>

但我总是得到“filectime(): stat failed”和致命错误.. 不知道为什么。你能帮我改正我的代码吗,我会很高兴

【问题讨论】:

  • 文件需要 post 方法和有效的 enctype 并使用 $_FILES,而不是 $_GET。认为这是一个“答案”。
  • 感谢您的回答,但现在我收到如下错误:filectime() 期望参数 1 也是有效路径,而 pathinfo() 也是有效字符串

标签: php mysql file upload


【解决方案1】:

您必须在表单中添加 enctype 属性:

<form method="post" action="upload_action.php" enctype="multipart/form-data"> 
  Item Name:<br>
  <input type="text" name="itemName"><br>
   File:<br>
  <input type="file" name="item"><br>
  <input type="submit" name="submit">
</form>

那么您上传的文件将在全局变量“$_FILES”中

<?php
print_r($_POST);
print_r($_FILES);

$file = $_FILES["item"];

$itemName = $_POST["itemName"];
$uploadDate = filectime($file['tmp_name']);
$filePathArray = pathinfo($file['tmp_name']);
$filePath = $filePathArray["filename"];

print_r($uploadDate);
print_r($filePathArray);
?>

但在将路径保存到数据库之前,您应该使用move_uploaded_file 移动上传的文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多