0

我正在尝试制作一个简单的上传脚本,它有一个图像上传部分和一个文件上传部分我想尝试将图像和文件以及其他一些变量存储在同一个数据库中,但我无法完成这个想知道是否有人可以帮助解决我的困境。

指数:

<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/

任何解决此问题的帮助将不胜感激:)

4

2 回答 2

1

要使file输入起作用,您需要指定enctype表单的。你需要enctype="multipart/form-data". 有关更多信息,请参阅PHP POST 上传

于 2013-10-22T19:09:34.100 回答
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 编码,它只对调试有用……即使这样,其他人也可以更好地使用合理的调试工具)。

于 2013-10-22T19:10:28.340 回答