Почему я получаю эту ошибку при попытке загрузить изображение? - PullRequest
0 голосов
/ 18 февраля 2012

Когда я захожу в myserver index и загружаю и оттуда изображение с помощью интерфейса, все работает нормально. Но как только я попытаюсь самостоятельно войти в путь, вроде:

http://myserver/upload.php?image['name']=F:\Bilder\6.jpg

выдает ошибку, что все поля обязательны для заполнения. Но я должен загрузить изображения, как это, потому что я планирую реализовать это в приложении, которое я делаю. Дело в том, что я не очень хорошо знаком с php.

вот файл upload.php

<code><?php
session_start();

require("includes/conn.php");


function is_valid_type($file)
{

$valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/png");

if (in_array($file['type'], $valid_types))
    return 1;
return 0;
}

function showContents($array)
{
echo "<pre>";
print_r($array);
echo "
"; } $ TARGET_PATH = "images /"; $ image = $ _FILES ['image']; $ image ['name'] = mysql_real_escape_string ($ image ['name']); $ TARGET_PATH. = $ Image ['name']; if ($ image ['name'] == "") { $ _SESSION ['error'] = "Все поля обязательны для заполнения"; заголовок ("Location: index.php"); выход; } if (! is_valid_type ($ image)) { $ _SESSION ['error'] = "Вы должны загрузить JPEG, GIF или BMP"; заголовок ("Location: index.php"); выход; } if (file_exists ($ TARGET_PATH)) { $ _SESSION ['error'] = "Файл с таким именем уже существует"; заголовок ("Location: index.php"); выход; } if (move_uploaded_file ($ image ['tmp_name'], $ TARGET_PATH)) { $ sql = "вставить в аватар (имя файла) значения ('". $ image [' name ']. "')"; $ result = mysql_query ($ sql) или die («Не удалось вставить данные в БД:». mysql_error ()); выход; } еще { заголовок ("Location: index.php"); выход; }

?>

и index.php

                <?php
                if (isset($_SESSION['error']))
                {
                    echo "<span id=\"error\"><p>" . $_SESSION['error'] . "</p></span>";
                    unset($_SESSION['error']);
                }
                ?>
                <form action="upload.php" method="post" enctype="multipart/form-data">
                <p>

                    <label>Avatar</label>
                    <input type="file" name="image" /><br />
                    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
                    <input type="submit" id="submit" value="Upload" />
                </p>

Ответы [ 3 ]

1 голос
/ 18 февраля 2012

Если вам нужно отправить POST материал в веб-форму (в отличие от GETting, что вы и делаете здесь), вы не можете просто указать данные, которые должны быть POSTed, как часть URL.

Взгляните на эти методы HTTP (GET и POST), чтобы понять разницу.

В вашем приложении все, что вам нужно сделать, - это разместить POST в URL. В зависимости от того, какие инструменты вы используете для программирования, вы должны посмотреть, как отправлять данные через POST.

Также попробуйте проверить, доступна ли реализация curl (или libcurl) для вашей платформы разработки.

1 голос
/ 18 февраля 2012

проблема заключается в

if ( $image['name'] == "" )

$ изображение там не имеет значения.

Вы делаете запрос на получение, поэтому, если вы хотите узнать, что за переменная изображения, вы должны использовать

$_GET['image']

Другое дело, что вы делаете $ image = $ _FILES ['image'];

$ _ ФАЙЛЫ будут доступны только по запросу. Загрузка файлов не может быть выполнена так же, как вы делаете это сейчас с помощью параметра из запроса GET.

1 голос
/ 18 февраля 2012

Это просто не сработает, так как вы не можете загрузить изображение, отправив $_GET[] переменные через URL.

Как вы можете видеть на полученной вами странице upload.php, файл извлекается на странице phpчерез $_FILES['image'].

Если вы измените это значение на $_GET['image'] и повторите попытку, чтобы опубликовать ссылку с предложенной вами переменной get, вы, вероятно, сможете увидеть путь к вашему файлу, но он будет только в виде строкового типа, а нефактический загруженный объект файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...