Проблемы с загрузкой файлов с PHP - PullRequest
0 голосов
/ 24 августа 2011

Мой текущий код (не работает):

<label for="homepage"><h3>Home Page Image</h3></label><input type="hidden" name="MAX_FILE_SIZE" value="300000" /><input type="file" name="homepage" />
        <?php
            $tmp_name = $_FILES['homepage']['tmp_name'];
            $file_type= $_FILES['homepage']['type'];
            $name = strtolower($_POST['title']) . ".png";
            $upload_dir = "/slideshow/";
            $file_path = "$upload_dir/$name";
            list($width, $height, $type, $attr)=getimagesize("$tmp_name");

            if(isset($_POST['submit']) && $file_type == "image/png" && $width==800 && $height==250)
            {
                move_uploaded_file($tmp_name, "$upload_dir/$name");
            }
            elseif((isset($_POST['submit']) && ($file_type != "image/png" || $width!=800 || $height!=250)))
            {
                echo "<div class=\"errorcheck\">Please select an image that meets the requirements. </div>";
                echo "$width $height $type";
            }
        ?>
</br>

Возвращает «Предупреждение: move_uploaded_file (slideshow / test.png) [function.move-uploaded-file]: не удалось открыть поток: в доступе отказано/home/xxx/xxx/back_end/add.php в строке 93 Предупреждение: move_uploaded_file () [function.move-uploaded-file]: невозможно переместить '/ tmp / phpGXQv9g' в 'слайд-шоу / test.png' в / home/xxx/xxx/back_end/add.php в строке 93 "

Я новичок в этом, поэтому, пожалуйста, объясните простым способом спасибо.

Ответы [ 4 ]

0 голосов
/ 24 августа 2011

попробуйте изменить это:

$name = strtolower($_POST['title']) . ".png";
$upload_dir = "/slideshow/";
$file_path = "$upload_dir/$name";

к этому:

$file_path = $upload_dir."/".$name;

и

move_uploaded_file($tmp_name, "$upload_dir/$name");

к этому:

move_uploaded_file($tmp_name, $file_path);

когда вы используете тег, не забывайте тег ... иначе он не будет передавать значение для метода POST.

0 голосов
/ 24 августа 2011

У вас практически нет обработки ошибок, следуйте рекомендациям на php.net:

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

Для начала, для отладки хотя бы распечатайте массив $_FILES:

echo 'Here is some more debugging info:';
print_r($_FILES);
0 голосов
/ 24 августа 2011

Похоже, что может быть много ошибок, когда вы пытаетесь отобразить и использовать переменную внутри функций.Делая это и вызывая их с помощью переменной $ в кавычках, вы кодируете ее как заданную строку, а не как переменную.Например:

$foo = 'bar';
echo $foo;
Result: bar

$foo = 'bar';
echo '$foo';
Result: $foo
0 голосов
/ 24 августа 2011

Проблема здесь (я думаю) в том, как вы ссылаетесь на переменную $ tmp_name.

Не должно быть в двойных кавычках. Или так должно быть

...getimagesize("${tmp_name}");
...