У меня есть проблема, которую я пытаюсь решить. Проблема заключается в загрузке файла с использованием CURL и предложении пользователю сохранить приглашение в браузере, когда это происходит. Я могу успешно открыть файл, но он открывается прямо в браузере как символьные данные.
До сих пор я пытался использовать стандартные заголовки Content-Type и Content-Disposition, но не повезло, фактически выполнив диалоговое окно сохранения:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "ftp://server.com/recordings/4_23_2019/CD36FAFA9DFD4DE190B487C503D5A3D2 @ 2_04_28 PM.wav");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FILE, $file); #output
curl_setopt($ch, CURLOPT_USERPWD, 'username:password');
$file = curl_exec($ch);
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="CD36FAFA9DFD4DE190B487C503D5A3D2 @ 2_04_28 PM.wav"');
header('Content-Transfer-Encoding: binary');
header('Content-length: ' . filesize($file));
readfile($file);
exit;
}
?>
Я считаю, что использование этих заголовков должно предложить пользователю приглашение на сохранение, но вместо этого я получаю страницу с кучей случайных символов.
Произведенные ошибки:
Предупреждение: file_exists () ожидает, что параметр 1 будет ресурсом, строка
указано в / path / name
Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены