La pequeña nota de Django FileResponse implementa la descarga de archivos

Aprendí FileResponse hoy. Este módulo es increíble. Después de aprenderlo, comencé a imaginar cómo seré en el futuro en el front-end, y estoy babeando cuando pienso en ello.

ArchivoRespuesta

FileResponse es una subclase de StreamingHttpResponse con segmentación automática y funciones de iteración automática, adecuada para la transmisión de archivos binarios. Los formatos de archivo de transmisión comúnmente utilizados incluyen py, txt, jpg, png, gif, docx, xlsx, mp3, mp4, etc.

Echemos un vistazo al código.

from django.http import FileResponse

def download(request):
    response = FileResponse(open(r"yinyue.mp3", "rb"))
    response['Content-Type'] = 'application/octet-stream'
    response['Content-Disposition'] = "attachment;filename=music.mp3"  # 注意filename不支持中文
    return response

Defina la función de descarga en la vista, tenga en cuenta que la solicitud debe usarse como parámetro y el módulo FileResponse debe importarse. Cuando usa FileResponse para leer un archivo, puede usar directamente la función de abrir sin usar el método abierto. Hay dos etiquetas MIME específicas Content-Type y Content-Disposition, la primera es para especificar el tipo de archivo, la segunda es para especificar el nombre del archivo para descargar, tenga en cuenta que hay un parámetro adjunto y el nombre del archivo no es compatible con chino nombres (por el momento lo entiendo).

Finalmente, si usa una ruta relativa al especificar la ruta del archivo, debe prestar especial atención.La ruta relativa debe ser relativa a manage.py, no relativa a la función de vista.
inserte la descripción de la imagen aquí
Debido a que MP3 y manage.py están en el mismo nivel de directorio, la referencia directa está hecha. Ah, por cierto, al leer y escribir, lea y escriba en binario, que es rb, no r.

Supongo que te gusta

Origin blog.csdn.net/lishuaigell/article/details/124226453
Recomendado
Clasificación