загрузка изображений с использованием php - PullRequest
0 голосов
/ 11 декабря 2008

Я использовал этот код для загрузки картинки. Я получил этот код от 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>

Кроме того, помогите мне извлечь изображение из базы данных и показать его на странице.

Как ты думаешь, теперь это сработает?

Ответы [ 3 ]

1 голос
/ 11 декабря 2008

Я бы не советовал хранить ваш двоичный файл изображения непосредственно в базе данных. Вместо этого сохраните его на диске и сохраните указатель файла (каталог файлов + имя файла) в БД.

1 голос
/ 12 декабря 2008

Проблема с хранением изображений в файловой системе сводится к репликации базы данных. Вам также потребуется репликация файловой системы, которая иногда может быть сложнее, чем репликация базы данных, особенно когда некоторые серверы могут быть удаленными.

Ни одна из ваших переменных $ form_ не установлена ​​(кроме случаев, когда нет кода, который я не вижу, или у вас «опасно» глобальные регистры). Также вы захотите добавить косую черту (или mysql_real_escape_string) для любых запросов, которые принимают значения REQUEST, в противном случае ваш скрипт подвержен внедрению 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.

1 голос
/ 11 декабря 2008

См. 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'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...