使用图像上载脚本上传文件

时间:2013-10-22 19:04:27

标签: php mysql

我正在尝试创建一个简单的上传脚本,其中包含图像上传部分和文件上传部分,我想尝试将图像和文件存储在同一个数据库中以及其他一些变量,我遇到了麻烦我想知道是否有人可以帮助解决我的困境。

指数:

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

任何有关解决此问题的帮助都将非常感激:)

2 个答案:

答案 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编码,它只对调试很有用......即使这样,其他人也可以使用合理的调试工具。)