【问题标题】:image upload using php使用php上传图片
【发布时间】:2010-09-26 11:19:50
【问题描述】:

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

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

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

你认为这现在可行吗?

【问题讨论】:

    标签: php file-upload


    【解决方案1】:

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

    不要使用$form_data作为上传文件的文件名,试试$_FILES['form_data']['tmp_name']

    你也可以替换相当笨拙的

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 如何使用php将图像保存在数据库中,请帮助我。
      【解决方案3】:

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

      没有设置您的 $form_ 变量(除非存在我看不到的代码或者您“危险地”打开了寄存器全局变量)。此外,您还需要在任何接受 REQUEST 值的查询上添加斜杠(或 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。

      【讨论】:

        猜你喜欢
        • 2011-03-17
        • 2014-07-11
        • 2013-01-29
        • 1970-01-01
        • 1970-01-01
        • 2014-11-07
        相关资源
        最近更新 更多