我正在尝试创建一个简单的上传脚本,其中包含图像上传部分和文件上传部分,我想尝试将图像和文件存储在同一个数据库中以及其他一些变量,我遇到了麻烦我想知道是否有人可以帮助解决我的困境。
指数:
<body>
<form method="post" action="insert_file.php">
<table>
<tr><td>Title:</td><td><input type="text" name="title" /></td></tr>
<tr><td>Author:</td><td><input type="text" name="author"/></td></tr>
<tr><td>Description:</td><td><textarea cols="30" rows="10" name="description"></textarea></td></tr>
<tr><td>Category:</td>
<td>
<select name="category">
<option value="poker">Poker</option>
<option value="sportsbetting">Sports Betting</option>
<option value="financialbetting">Financial Betting</option>
<option value="casino">Casino</option>
<option value="bingo">Bingo</option>
<option value="socialgaming">Social Gaming</option>
<option value="affiliatemarketing">Affiliate Marketing</option>
</select>
</td>
</tr>
<tr><td>Publication Date:</td><td><input type="text" name="pub_date" id="datepicker"/></td></tr>
<tr><td>Tags:</td><td><input type="text" name="tags"/></td></tr>
<tr><td>Price:</td><td><input type="text" name="price"/></td></tr>
<tr><td>Image:</td><td><input type="file" name="image"/></td></tr>
<tr><td>Website:</td><td><input type="text" name="website"/></td></tr>
<tr><td>Contact Email:</td><td><input type="text" name="email"/></td></tr>
<tr><td>File:</td><td><input type="file" name="uploaded_file"/></td></tr>
<tr><td></td><td><input type="submit" value="Submit"/></td></tr>
</table>
</form>
</body>
插入:
<?php
// Check if a file has been uploaded
if(isset($_FILES['uploaded_file'])) {
// Make sure the file was sent without errors
if($_FILES['uploaded_file']['error'] == 0) {
// Connect to the database
include('../config.inc');
// Connect to the database
$dbLink = $con;
// Gather all required data
$username = $_SESSION['username'];
$title = $_POST['title'];
$author = $_POST['author'];
$description = $_POST['description'];
$category = $_POST['category'];
$pub_date = $_POST['pub_date'];
$tags = $_POST['tags'];
$price = $_POST['price'];
$website = $_POST['website'];
$email = $_POST['email'];
$name = $title;
$mime = $dbLink->real_escape_string($_FILES['uploaded_file']['type']);
$data = $dbLink->real_escape_string(file_get_contents($_FILES ['uploaded_file']['tmp_name']));
$size = intval($_FILES['uploaded_file']['size']);
// Create the SQL query
$query = "
INSERT INTO `file2` (
`username`,
`title`,
`author`,
`description`,
`category`,
`pub_date` ,
`tags`,
`price`,
`website`,
`email`,
`name`,
`mime`,
`size`,
`data`,
`created`
)
VALUES (
'{$username}',
'{$title}',
'{$author}',
'{$description}',
'{$category}',
'{$pub_date}',
'{$tags}',
'{$price}',
'{$website}',
'{$email}',
'{$name}',
'{$mime}',
'{$size}',
'{$data}',
NOW()
)";
// Execute the query
$result = $dbLink->query($query);
// Check if it was successfull
if($result) {
echo '<center>Success! Your file was successfully added!';
}
else {
echo '<center>Error! Failed to insert the file'
. "<pre>{$dbLink->error}</pre>";
}
}
else {
echo 'An error accured while the file was being uploaded. '
. 'Error code: '. intval($_FILES['uploaded_file']['error']);
}
// Close the mysql connection
$dbLink->close();
}
else {
echo 'Error! A file was not sent!';
}
// Echo a link back to the main page
echo '<center><font face=arial>';
echo 'You file has been uploaded successfully, please allow upto 24 Hours for your report to be approved by administration. ';
echo '<p>Click <a href="index.php">here</a> to go back</p>';
?>
数据库 - http://postimg.org/image/n0loned2v/
任何有关解决此问题的帮助都将非常感激:)
答案 0 :(得分:1)
要使file
输入正常工作,您需要指定表单的enctype
。您需要enctype="multipart/form-data"
。有关详细信息,请参阅PHP POST uploads。
答案 1 :(得分:0)
<form method="post" action="insert_file.php" enctype='multipart/form-data'>
原因: 当您发出POST请求时,您必须以某种方式对构成请求主体的数据进行编码。
HTML表单提供了两种编码方法。默认值为application / x-www-form-urlencoded,它与URL末尾的查询字符串大致相同。另一个是multipart / form-data,是一种更复杂的编码,但允许将整个文件包含在数据中。 (HTML 5引入了text / plain编码,它只对调试很有用......即使这样,其他人也可以使用合理的调试工具。)