Проблема
Когда вы запускаете программу на удаленном компьютере (это ваш сервер на pythonanywhere), тогда все операции происходят на этом удаленном компьютере, а не на компьютере пользователя.
Поэтому , когда вы загружаете что-то на удаленный компьютер, оно будет загружено на удаленный компьютер (pythonanywhere).
Решение
Для выполнения ваших требований (загрузите файл на компьютер пользователя, а не сервер), вы, вероятно, сделали бы что-то вроде этого:
- Загрузите файл с YouTube локально (как вы в настоящее время делаете с
YouTube....download()
. - Отправьте файл пользователю. Это то, что решение Гагана Аггарвала пытается сделать с django
FileResponse
Зачем эта работа?
Каждый раз, когда вы посещаете На странице вашего браузера ваше приложение django выполняет примерно следующее:
- Получает запрос от пользователя
- Затем возвращает ответ
Обычно Django приложение вернет страницу HTML. Но страница HTML - это просто файл, как и ваше видео с YouTube, которое вы загружаете. Затем вы можете отправить видеофайл вместо веб-страницы. Затем браузер пользователя попытается открыть этот файл.
Как выбрать местоположение для загрузки?
Ваше Django приложение не может выбрать место загрузки для пользователя компьютер. Это было бы опасно, если бы любой веб-сайт мог просто загружать файлы на ваш компьютер в любом месте.
Однако, когда вы отправляете файл пользователю, они могут выбрать, где его загрузить.
Если вы посмотрите документацию для FileResponse , вы увидите, что вы можете передать параметр as_attachment=True
.
Это заставит Django отправить файл как «вложение» Это означает, что он попытается скачать его, а не открывать. Это побудит пользователя выбрать место загрузки файла.