Как скачать файл на сервер по ссылке без расширения?

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

Самый простой способ - это использовать функцию file_get_contents(), которая позволяет получить содержимое файла по его URL. Однако, чтобы сохранить файл на сервере без расширения, нам понадобится указать имя файла для сохранения в соответствующем заголовке HTTP.

Вот пример кода:

$fileUrl = 'https://example.com/path/to/file'; // URL файла для скачивания
$savePath = '/путь/к/директории/на/сервере'; // Путь к директории на сервере, где будет сохранен файл

// Открываем ссылку на файл
$resource = fopen($fileUrl, 'r');

// Получаем информацию о заголовках ответа
$headerInfo = stream_get_meta_data($resource);

// Ищем заголовок "Content-Disposition", чтобы получить оригинальное имя файла
$fileName = null;
foreach ($headerInfo['wrapper_data'] as $header) {
    if (strpos($header, 'Content-Disposition') !== false) {
        $fileName = basename(explode('=', $header)[1]);
        break;
    }
}

// Генерируем уникальное имя файла на сервере
$saveFileName = uniqid() . '.' . pathinfo($fileName, PATHINFO_EXTENSION);

// Путь к файлу на сервере
$saveFilePath = $savePath . '/' . $saveFileName;

// Создаем и сохраняем файл на сервере
$file = file_get_contents($fileUrl);
file_put_contents($saveFilePath, $file);

// Закрываем ресурс
fclose($resource);

В этом примере мы используем функцию fopen() для открытия ссылки на файл, а затем, используя функцию file_get_contents(), получаем содержимое файла. Дополнительно, с помощью функции stream_get_meta_data() получаем информацию о заголовках ответа, чтобы извлечь оригинальное имя файла. Далее, мы генерируем уникальное имя файла на сервере с помощью функции uniqid() и сохраняем файл на сервере с помощью функции file_put_contents(). Затем закрываем ресурс, вызывая функцию fclose().

Обратите внимание, что на сервере должны быть установлены необходимые разрешения для записи файлов в указанную директорию. В противном случае, код может вызвать ошибку "Permission denied".