将文件上传内容正确保存到 MySQL 数据库以检索为 link
properly save file upload contents to MySQL DB to retrieve as a link
我正在尝试构建一个将文件信息保存到 MySQL 数据库 table 的上传组件。我的第一个问题是每次用户上传文件时,都会将两个条目添加到数据库中。
我的下一个问题是我要抓取上传的文件并将其显示为 link 供用户单击以在新选项卡中查看。现在,上传保存文件的服务器目录路径。当我去点击文件时,我收到一条错误消息,说找不到目录路径。
我最大的问题是 link 查看上传的问题。然后,如果有人对复式输入问题也有建议,那也将不胜感激。
我的代码:
HTML: 文件上传功能 - 成功上传所有变量两次...
<form id="sgFileUpload" action='sg_addupload.php' target='hiddenFrame' method="POST" enctype="multipart/form-data">
<fieldset id='uploadBtnField'>
<input type="hidden" name="MAX_FILE_SIZE" value="50000000"/>
<input type='hidden' name='sgRef' id='sgRef' value='<?php echo $sgref ?>'>
<input type='file' name='searchFile' id='searchFile' multiple>
<input type='submit' name='startUpload' id='startUpload' value='Upload'>
</fieldset>
</form> <!-- End Form Input -->
我的PHP:文件上传到数据库
if(isset($_POST['sgRef'])) {
$sgref=$_POST['sgRef'];
}
$fileName = $_FILES['searchFile']['name'];
$fSize = $_FILES['searchFile']['size'];
$fType = $_FILES['searchFile']['type'];
$target = "../bms/uploads/";
$fileTarget = $target.$fileName;
$tempFileName = $_FILES["searchFile"]["tmp_name"];
//$docType = $_POST['docType'];
$result = move_uploaded_file($tempFileName,$fileTarget);
if ($result) {
//run DB Connection code...
//Writes the information to the database
$sql="INSERT sg_uploads(sgref,file,type,size,content,doctype) VALUES('$sgref','$fileName','$fType','$fSize','$fileTarget','Other')";
$conn->query($sql);
if($conn->query($sql)) {
echo 'Your file <html><b><i>'.$fileName.'</i></b></html> has been successfully uploaded!';
} else {
//Gives an error if its not
echo "Sorry, there was a problem uploading your file.";
}
//Free the result variables.
$sql->free();
$result->free();
//Close the Database connection.
$conn->close();
}//End If Statement.
PHP 代码:从数据库显示 links(PHP 检索代码成功)
<?php
while ($row = $result->fetch_array()) {
echo "<tbody>";
echo "<tr>";
echo "<td>" . "<a href=".$row['content']."' >".$row['file']."</a>". "</td>";
echo "<br/>";
echo "<br/>";
}//end while.
echo "</tr>";
echo "</tbody>";
$filename = $row[0];
echo "<p></p>";
?>
感谢所有帮助!谢谢!
注意:数据库中的 'file' 列是 'blob' 的数据类型。
"@Fred, yes it was a directory issue. Upon fixing this issue, I was able to successfully link the the page and view it. If you summarize your two suggestions as an answer, I will mark your response as the correct answer. Thank you!"
正如我在评论中所说:
重复的条目是由$conn->query($sql); if($conn->query($sql))
引起的
其中使用了两个 query()
实例。
您可以只使用条件语句并省略 $conn->query($sql);
。
对于路径问题,评论中也指出文件夹的路径未正确编入索引。
脚注:
您目前可以接受 SQL 注射。最好使用准备好的语句。
我正在尝试构建一个将文件信息保存到 MySQL 数据库 table 的上传组件。我的第一个问题是每次用户上传文件时,都会将两个条目添加到数据库中。
我的下一个问题是我要抓取上传的文件并将其显示为 link 供用户单击以在新选项卡中查看。现在,上传保存文件的服务器目录路径。当我去点击文件时,我收到一条错误消息,说找不到目录路径。
我最大的问题是 link 查看上传的问题。然后,如果有人对复式输入问题也有建议,那也将不胜感激。
我的代码:
HTML: 文件上传功能 - 成功上传所有变量两次...
<form id="sgFileUpload" action='sg_addupload.php' target='hiddenFrame' method="POST" enctype="multipart/form-data">
<fieldset id='uploadBtnField'>
<input type="hidden" name="MAX_FILE_SIZE" value="50000000"/>
<input type='hidden' name='sgRef' id='sgRef' value='<?php echo $sgref ?>'>
<input type='file' name='searchFile' id='searchFile' multiple>
<input type='submit' name='startUpload' id='startUpload' value='Upload'>
</fieldset>
</form> <!-- End Form Input -->
我的PHP:文件上传到数据库
if(isset($_POST['sgRef'])) {
$sgref=$_POST['sgRef'];
}
$fileName = $_FILES['searchFile']['name'];
$fSize = $_FILES['searchFile']['size'];
$fType = $_FILES['searchFile']['type'];
$target = "../bms/uploads/";
$fileTarget = $target.$fileName;
$tempFileName = $_FILES["searchFile"]["tmp_name"];
//$docType = $_POST['docType'];
$result = move_uploaded_file($tempFileName,$fileTarget);
if ($result) {
//run DB Connection code...
//Writes the information to the database
$sql="INSERT sg_uploads(sgref,file,type,size,content,doctype) VALUES('$sgref','$fileName','$fType','$fSize','$fileTarget','Other')";
$conn->query($sql);
if($conn->query($sql)) {
echo 'Your file <html><b><i>'.$fileName.'</i></b></html> has been successfully uploaded!';
} else {
//Gives an error if its not
echo "Sorry, there was a problem uploading your file.";
}
//Free the result variables.
$sql->free();
$result->free();
//Close the Database connection.
$conn->close();
}//End If Statement.
PHP 代码:从数据库显示 links(PHP 检索代码成功)
<?php
while ($row = $result->fetch_array()) {
echo "<tbody>";
echo "<tr>";
echo "<td>" . "<a href=".$row['content']."' >".$row['file']."</a>". "</td>";
echo "<br/>";
echo "<br/>";
}//end while.
echo "</tr>";
echo "</tbody>";
$filename = $row[0];
echo "<p></p>";
?>
感谢所有帮助!谢谢!
注意:数据库中的 'file' 列是 'blob' 的数据类型。
"@Fred, yes it was a directory issue. Upon fixing this issue, I was able to successfully link the the page and view it. If you summarize your two suggestions as an answer, I will mark your response as the correct answer. Thank you!"
正如我在评论中所说:
重复的条目是由$conn->query($sql); if($conn->query($sql))
其中使用了两个 query()
实例。
您可以只使用条件语句并省略 $conn->query($sql);
。
对于路径问题,评论中也指出文件夹的路径未正确编入索引。
脚注:
您目前可以接受 SQL 注射。最好使用准备好的语句。