使用php上传图片

时间:2008-12-11 16:16:47

标签: php file-upload

我使用此代码上传图片。我从stackoverflow获得了这段代码。我仍然无法上传图片。我在表设置2中更改了数据库连接设置。我创建了表,但我不确定我创建的表的属性是否正确。

<html>
<head><title>Store Some Binary File to a DB</title></head>
<body>

<?php
if ($submit) {
    $conn = mysql_connect("localhost", "your_username", "your_password") 
        or die ("Error connecting to database.");

    mysql_select_db("your_database", $conn) 
        or die ("error connecting to database.");

    $data = addslashes(file_get_contents($_FILES['form_data']['tmp_name'])


    $result = mysql_query ("INSERT INTO your_table ".
         "(description,bin_data,filename,filesize,filetype) ".
         "VALUES ('$form_description','$data','$form_data_name',".
         "'$form_data_size','$form_data_type')",
         $conn);

    $id = mysql_insert_id();
    print "<p>This file has the following Database ID: <b>$id</b>";

    mysql_close();

} else {
?>

    <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
    File Description:<br>
    <input type="text" name="form_description"  size="40">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
    <br>File to upload/store in database:<br>
    <input type="file" name="form_data"  size="40">
    <p><input type="submit" name="submit" value="submit">
    </form>

<?php

}

?>

</body>
</html>

另外,帮我从数据库中检索图像并在页面上显示。

你认为thiis现在会起作用吗?

3 个答案:

答案 0 :(得分:1)

我不建议将二进制图像文件直接存储在数据库中。而是将其存储在磁盘上并将文件指针(文件目录+文件名)存储在数据库中。

答案 1 :(得分:1)

请参阅http://www.php.net/manual/en/features.file-upload.php

请尝试$_FILES['form_data']['tmp_name']

,而不是使用$ form_data作为上传文件的文件名

您也可以替换相当笨拙的

fread(fopen($form_data, "r"), filesize($form_data))

file_get_contents($_FILES['form_data']['tmp_name'])

答案 2 :(得分:1)

将文件存储在文件系统上的问题归结为数据库复制。您还需要文件系统复制,有时可能比数据库复制更难,尤其是当某些服务器可能是远程服务器时。

你的$ form_变量都没有被设置(除非你的代码我看不到或者你'危险地'有注册全局变量)。您还需要在接受REQUEST值的任何查询上添加addslashes(或mysql_real_escape_string),否则您的脚本很容易进行SQL注入。

你想要:

$form_description = isset($_POST['form_description']) ? $_POST['form_description'] : false;

其他变量甚至没有发布。你知道HTML和PHP吗?这很容易解决,但我不是为你写的!

我们需要的是一些反馈脚本生成的内容..您可以通过执行以下操作来获取图像:

$result = mysql_query ("SELECT `bin_data` FROM `your_table` WHERE `id` = ".$id, $conn);

然后做例如(用文件数组中确定的相关类型替换内容类型):

$result_data = mysql_fetch_array($result, MYSQL_ASSOC);
header('Content-Type: image/jpg');
echo $result_data['bin_data'];
exit;

你需要为该脚本做更多的工作,这需要HTML,PHP和MySQL的知识。

豫ICP备18024241号-1