【发布时间】:2020-05-18 10:21:13
【问题描述】:
我正在尝试构建一个小上传脚本,它将数据作为 blob 上传到我的数据库。我做了一个非常简单的表格:
<form action="admin.php" method="post">
<input type="file" name="datei">
<br>
<input type="submit" value="Upload!">
</form>
我的 PHP 文件是这样的:
if (isset($_FILES["datei"]) && isset($_FILES["datei"]["tmp_name"]) && is_uploaded_file($_FILES["datei"]["tmp_name"])) {
try {
$con = new MySQLi("localhost", "tom", "DBdb123#", "db");
if ($con) {
$name = basename($_FILES["datei"]["tmp_name"]);
$datei = $_FILES["datei"];
$sql = "INSERT INTO dateien (name, datei) VALUES (?, ?)";
$kommando = $db->prepare($sql);
$kommando->bind_param("sb", $name, $datei);
try {
$kommando->execute();
echo "Upload erfolgreich!";
} catch(Exception $ex) {
echo "Fehler: " . $ex->getMessage() . "!";
}
$db->close();
}
} catch (Exception $ex) {
echo "Fehler: " . $ex->getMessage();
}
}
所以我在try 之后请求了一条错误消息,但经过测试,什么也没发生。没有错误,没有成功消息,没有数据库条目..就像我没有点击/上传任何东西一样。我现在尝试了一个小时,但没有任何变化。这真的很令人沮丧。
【问题讨论】:
-
您的 FORM 中需要 'enctype="multipart/form-data"'
-
第一个
if失败是什么?你什么也得不到。所以我会调查一下。 -
还
$datei = $_FILES["datei"];将$datei设置为一个数组,它不会与$kommando->bind_param("sb", $name, $datei);一起使用 -
另外我假设文件列被定义为一个blob,你试图将文件存储到数据库中,而不仅仅是文件系统上的路径。这意味着您将需要读取文件,以便您可以存储它
-
@RiggsFolly Mhh 好吧,将 form-data 属性添加到表单使流程正常工作并显示错误。你说得对,我正在使用 blob 列,我将不得不学习如何读取文件等。谢谢,先生!