@KlevakinSergey

Как скачать фаил с сервера django?

Доброго времени суток всем .у меня реализован на сайте не большой конвертер который берет ссылку с ютуба конвертирует ее в мр3 и отправляет на почту ссылку для скачивание конвертироного файла. фаил после конвертации попадает в папку media. и вот у меня вопрос как сделать чтоб после перехода по ссылке фаил скачивался пользывателю на комп?
views.py

import youtube_dl
import os
 
from django.shortcuts import render, redirect
from django.contrib import messages
from converter.models import Converter
from converter.forms import ConvertForm
from django.core.mail import send_mail
from django.conf import settings
# from django.http import FileResponse
 
# Create your views here.
 
 
DOWNLOAD_OPTIONS_MP3 = {
    'format': 'bestaudio/best',
    'outtmpl': 'media/%(title)s.%(ext)s',
    'nocheckcertificate': True,
    'postprocessors': [{
        'key': 'FFmpegExtractAudio',
        'preferredcodec': 'mp3',
        'preferredquality': '192',
    }],
}
 
 
def get_mp3(link, email, url):
    with youtube_dl.YoutubeDL(DOWNLOAD_OPTIONS_MP3) as dl:
        result = dl.extract_info(link)
        filename = result['title']
    download_link = 'http://' + url + '/media/' + filename.replace(' ', '_') + '.mp3'
    send_mail('Ссылка на скачивание файла', download_link, settings.EMAIL_HOST_USER, [email], fail_silently=False, )
 
 
 
def get_link(request):
    if request.method == 'POST':
        form = ConvertForm(request.POST)
        if form.is_valid():
            link = form.cleaned_data.get('link')
            email = form.cleaned_data.get('email')
            query = Converter.objects.create(link=link, email=email)
            url = request.get_host()
            messages.success(request, 'Ссылка на скачивание отправлена на почту!')
            get_mp3(link, email, url)
            # return redirect('/')
    else:
        form = ConvertForm()
 
    return render(request, 'index.html', locals())
  • Вопрос задан
  • 674 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы