0

Как загружать и сохранять файлы с нужным именем

10

У меня есть проблема с загрузкой файлов (изображений) в папку с помощью следующего кода:

<form action='' method='POST' enctype='multipart/form-data'>
    <input type='file' name='userFile'><br>
    <input type='submit' name='upload_btn' value='upload'>
</form>

<?php
$target_Path = "images/";
$target_Path = $target_Path.basename( $_FILES['userFile']['name'] );
move_uploaded_file( $_FILES['userFile']['tmp_name'], $target_Path );
?>

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

Я попробовал заменить следующую строку:

$target_Path = $target_Path.basename( $_FILES['userFile']['name'] );

на эту:

$target_Path = $target_Path.basename( "myFile.png" );

Но это не работает. Подскажите, что я делаю не так?

5 ответ(ов)

1

Вы можете попробовать следующее:

$info = pathinfo($_FILES['userFile']['name']);
$ext = $info['extension']; // получаем расширение файла
$newname = "newname." . $ext; 

$target = 'images/' . $newname;
move_uploaded_file($_FILES['userFile']['tmp_name'], $target);

В этом примере мы используем функцию pathinfo() для получения информации о загружаемом файле. Затем извлекаем расширение файла и создаем новое имя для него, добавив к нему расширение. После этого используем функцию move_uploaded_file() для перемещения временного файла в заданную директорию. Не забудьте убедиться, что у вас есть необходимые права на запись в папку images.

0

Вы можете скачать исходный код демо по следующей ссылке: http://abhinavsingh.com/blog/2008/05/gmail-type-attachment-how-to-make-one/

Код готов к использованию, или вы можете изменить его в соответствии с потребностями вашего приложения. Надеюсь, это поможет 😃

0

Вы можете использовать HTML5 для того, чтобы разрешить загрузку только файлов изображений. Вот пример кода для uploader.htm:

<html>    
    <head>
        <script>
            function validateForm(){
                var image = document.getElementById("image").value;
                var name = document.getElementById("name").value;
                if (image == '') {
                    return false;
                }
                if (name == '') {
                    return false;
                } 
                else {
                    return true;
                } 
                return false;
            }
        </script>
    </head>

    <body>
        <form method="post" action="upload.php" enctype="multipart/form-data">
            <input type="text" name="ext" size="30"/>
            <input type="text" name="name" id="name" size="30"/>
            <input type="file" accept="image/*" name="image" id="image" />
            <input type="submit" value='Сохранить' onclick="return validateForm()"/>
        </form>
    </body>
</html>

Теперь код для upload.php:

<?php  
$name = $_POST['name'];
$ext = $_POST['ext'];
if (isset($_FILES['image']['name'])) {
    $saveto = "$name.$ext";
    move_uploaded_file($_FILES['image']['tmp_name'], $saveto);
    $typeok = TRUE;
    switch($_FILES['image']['type']) {
        case "image/gif": $src = imagecreatefromgif($saveto); break;
        case "image/jpeg": // Обычные и прогрессивные JPEG
        case "image/pjpeg": $src = imagecreatefromjpeg($saveto); break;
        case "image/png": $src = imagecreatefrompng($saveto); break;
        default: $typeok = FALSE; break;
    }
    if ($typeok) {
        list($w, $h) = getimagesize($saveto);
        $max = 100;
        $tw = $w;
        $th = $h;
        if ($w > $h && $max < $w) {
            $th = $max / $w * $h;
            $tw = $max;
        }
        elseif ($h > $w && $max < $h) {
            $tw = $max / $h * $w;
            $th = $max;
        }
        elseif ($max < $w) {
            $tw = $th = $max;
        }

        $tmp = imagecreatetruecolor($tw, $th);      
        imagecopyresampled($tmp, $src, 0, 0, 0, 0, $tw, $th, $w, $h);
        imageconvolution($tmp, array( // Увеличение резкости изображения
            array(-1, -1, -1),
            array(-1, 16, -1),
            array(-1, -1, -1)      
        ), 8, 0);
        imagejpeg($tmp, $saveto);
        imagedestroy($tmp);
        imagedestroy($src);
    }
}
?>

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

0

Когда вы работаете с загрузкой файлов в PHP, чтобы установить целевой путь для загружаемого файла, вы можете использовать следующий код:

<?php
$file_name = $_FILES["csvFile"]["name"];
$target_path = $dir = plugin_dir_path( __FILE__ ) . "upload/" . $file_name; // Замените \\ на /
echo $target_path;
move_uploaded_file($_FILES["csvFile"]["tmp_name"], $target_path);
?>

Обратите внимание на пару моментов:

  1. Ваша переменная $target_path формируется с помощью plugin_dir_path( __FILE__ ), что верно, если скрипт выполняется в контексте плагина WordPress. Однако нужно использовать прямой слэш (/) вместо обратного (\\) в пути, так как PHP работает лучше с прямыми слешами и это сделает код более кросс-платформенным.

  2. В вызове move_uploaded_file второй параметр не должен содержать $file_name, так как target_path уже включает имя файла.

Таким образом, код будет работать корректно, и файл будет перемещен в указанный путь. Убедитесь, что папка upload существует и у вас есть необходимые разрешения для записи в неё.

0

Чтобы настроить файл "php.ini", выполните следующие шаги:

Настройка файла "php.ini"

Сначала убедитесь, что PHP настроен на разрешение загрузки файлов. В вашем файле "php.ini" найдите директиву file_uploads и установите её в значение On:

file_uploads = On

Создание HTML формы

Далее создайте HTML-форму, которая позволит пользователям выбирать изображение для загрузки:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Выберите изображение для загрузки:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Загрузить изображение" name="submit">
</form>

</body>
</html>

Несколько правил для вышеуказанной HTML-формы:

  • Убедитесь, что форма использует метод method="post".
  • Форма также должна содержать атрибут enctype="multipart/form-data", который указывает, какой тип содержимого использовать при отправке формы. Без этих требований загрузка файла не будет работать.

Обратите внимание на следующее:

  • Атрибут type="file" тега <input> отображает поле ввода как контрол для выбора файла с кнопкой "Обзор" рядом.
  • Форма отправляет данные в файл под названием "upload.php", который мы создадим далее.

Создание PHP-скрипта для загрузки файла

Файл "upload.php" будет содержать код для загрузки файла:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);

// Проверяем, является ли файл изображением или нет
if (isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if ($check !== false) {
        echo "Файл является изображением - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "Файл не является изображением.";
        $uploadOk = 0;
    }
}
?>

Этот код проверяет, что загружаемый файл действительно является изображением, и устанавливает переменную $uploadOk в 1 или 0 в зависимости от результата проверки. После этого вы можете добавить логику для завершения загрузки файла, например, переместить его в нужную директорию, если $uploadOk равно 1.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь