- 已关闭**。此问题需要超过focused。当前不接受答案。
- 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
7小时前关闭。
Improve this question
所以我现在试着在我的数据库中存储一个图像,但是我就是不明白。目前我试着通过文件上传从用户那里得到图像,然后作为BLOB存储在数据库中。所以实际上是在数据库中存储图像的二进制数据。
<form action="editor.php" class="createBlogForm" autocomplete="off">
<input type="text" name="title" placeholder="Title" class="title">
<?php include 'editor.html'; ?>
</div>
<div id="catAndSave">
<select name="categoriesOnCreate" class="categoriesOnCreate">
<option value="option1">Option 1</option>
<option value="option2" selected="selected">Anderes</option>
</select>
<div id="coverImageDiv">
<label for="inputTag">
Select Cover Photo <br/>
<i class="fa fa-2x fa-camera"></i>
<input id="inputTag" type="file" name="image"/>
<br/>
<span id="imageName"></span>
</label>
</div>
<script>
let input = document.getElementById("inputTag");
let imageName = document.getElementById("imageName")
input.addEventListener("change", ()=>{
let inputImage = document.querySelector("input[type=file]").files[0];
imageName.innerText = inputImage.name;
})
</script>
<button type="submit" class="blogSave" onclick="save();">Save</button>
</form>
这就是我的形式,我知道它是非常松散的,但它不必如此。
单击按钮时,应执行此代码:
<script>
function save(){
var xmlhttp = new XMLHttpRequest();
var content = document.getElementsByClassName('content')[0].innerHTML;
var title = document.getElementsByClassName('title')[0].value;
var category = document.getElementsByClassName('categoriesOnCreate')[0].value;
var data = new FormData();
data.append("content", content);
data.append("title", title);
data.append("category", category);
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const id = urlParams.get('id');
xmlhttp.open("POST","editor.php?id=" + id ,true);
xmlhttp.send(data);
window.location = "http://192.168.56.104/sodablog/editor.php";
};
</script>
不太好用,因为它从来不执行这个,因为我在我的表单中写了:action ="editor.php"。但这不是重点,也不重要,因为这不是问题所在。
问题是PHP无法让我的文件上传。
<?php
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
session_start();
include 'dbconnect.php';
$content = $_POST['content'];
$title = $_POST['title'];
$category = $_POST['category'];
date_default_timezone_set('Europe/Rome');
$date = date("YmdHis");
$status = 'error';
if(!empty($_FILES["image"]["name"])) {
// Get file info
$fileName = basename($_FILES["image"]["name"]);
$fileType = pathinfo($fileName, PATHINFO_EXTENSION);
// Allow certain file formats
$allowTypes = array('jpg','png','jpeg','gif');
if(in_array($fileType, $allowTypes)){
$image = $_FILES['image']['tmp_name'];
$imgContent = addslashes(file_get_contents($image));
// Insert image content into database
$insert = $db->query("INSERT INTO `blog_posts`(`coverImage`) VALUES ('$imgContent');");
if($insert){
$status = 'success';
$statusMsg = "File uploaded successfully.";
}else{
$statusMsg = "File upload failed, please try again.";
}
}else{
$statusMsg = 'Sorry, only JPG, JPEG, PNG, & GIF files are allowed to upload.';
}
}else{
$statusMsg = 'Please select an image file to upload.';
}
// Display status message
echo $statusMsg;
$sql = "INSERT INTO `blog_posts`(`created_at`, `last_updated_at`, `content`, `title`, `category`)
VALUES('$date', '$date', '$content', '$title', '$category');";
$execution = mysqli_query($conn, $sql) or die("Fehler");
?>
为了进行测试,您可以在此处给出以下行:
$content = $_POST['content'];
$title = $_POST['title'];
$category = $_POST['category'];
一个值,这样就不会因为这些错误而出现错误。
但我还是得到了错误:请选择要上载的图像文件。
我对PHP、JavaScript和Web开发都是新手,所以很抱歉代码混乱。
1条答案
按热度按时间abithluo1#
您没有将图像从前端发送到后端。