[Django] Carga y descarga en segundo plano (enrutamiento universal de archivos de descarga y función de descarga)

通用 路由: 
     # 下载 文件
    url ( " media / (? P <path>. *) $ " , File_down.FileDown.as_view ()) 通用 下载 文件 函数 :
    

 desde django.utils.http import urlquote
 de rest_framework.views import APIView
 from django.shortcuts import render, redirect, HttpResponse
 from dal import models
 from django.http import JsonResponse, FileResponse, StreamingHttpResponse 
import os 

import xlwt 

BASE_DIR = os.path.dirname (os.path.dirname (os.path.abspath (__ file__)) )) # C: \ Users \ user \ Desktop \ DownTest 


class FileDown (APIView): 

    def get(auto, solicitud, ruta): 

        ruta = BASE_DIR + " \\ media \\ " + ruta.replace ( " / " , " \\ " ) 
        print ( " ruta " , ruta) 
        mensaje = {} 

        nombre_archivo = ruta.split ( " \\ " ) [- 1 ] 
        print ( " nombre_archivo " , nombre_archivo) 


        file = open (path.replace ( "  " , "" ), 'rb ') # Cadena Reemplazar en archivo 

        # Dígale al navegador que se trata de un archivo de descarga 
        response = FileResponse (file) 
        response [ ' Content-Type ' ] = ' application / octet-stream ' 
        response [ ' Content-Disposition ' ] = " adjunto; nombre de archivo = {} " .format (urlquote (nombre_archivo)) # establece el nombre 
        print (respuesta)
         respuesta de retorno
通用 configuración 配置: 
LANGUAGE_CODE = ' zh-hans ' 

TIME_ZONE = ' Asia / Shanghai ' 

USE_I18N = Verdadero 

USE_L10N = Verdadero 

USE_TZ = Verdadero 

# Internacionalización 
# https: // docs.djangoproject.com/en/1.11/topics/i18n/ 

STATIC_URL = ' / static / ' 
STATICFILES_DIRS = [ 
    os.path.join (BASE_DIR, ' static ' ), 
    os.path.join (BASE_DIR, " media " ), 
]
 
# Los usuarios de Django cargan archivos multimedia llamados 
MEDIA_URL = " / media / " 
# configuración de medios, los usuarios cargan los archivos se colocan en esta carpeta por defecto 
MEDIA_ROOT = os.path.join (BASE_DIR, " media " ) 


REST_FRAMEWORK = {
     " DEFAULT_AUTHENTICATION_CLASSES " : [],
     " DEFAULT_PERMISSION_CLASSES " : [], 
}
Diseño de la base de datos:
 clase Sugerencia (modelos.Modelo):
     "" " 
     Tabla de sugerencias del proyecto 
    " "" 
    nombre = modelos.ForeignKey (to = " UserInfo " , verbose_name = " Persona sugerida " ) 
    archivo = models.FileField (upload_to = ' sugerencia / archivos ' , null = False, UNIQUE = verdad, en blanco = false, verbose_name = " archivo (haga clic para descargar) " ) 
    nombre_archivo = models.CharField (= 50 MAX_LENGTH, nulos = False, verbose_name = " cabecera del archivo " ) 
    is_staff = Modelos.BooleanField (verbose_name = "¿ Es urgente ") 
    is_staf = models.BooleanField (verbose_name = " Ya sea para usar " ) 

    def  __str__ (self):
         return self.file 

    class Meta: 
        verbose_name = " Tabla de sugerencias de proyecto " 
        verbose_name_plural = verbose_name 
        db_table = ' Sugerencia '

 

Supongo que te gusta

Origin www.cnblogs.com/wanghong1994/p/12716469.html
Recomendado
Clasificación