2012-02-27 37 views
9

He FileField en mi modelo de Django:cómo descargar un archivo filefield en vista de Django

file=models.FileField(verbose_name=u'附件',upload_to='attachment/%Y/%m/%d',max_length=480) 

Este archivo se mostrará en la página web con enlace "http://test.com.cn/home/ projects/89/attachment/2012/02/24/sscsx.txt "

Lo que quiero hacer es que cuando el usuario haga clic en el enlace del archivo, descargue el archivo automáticamente; ¿Alguien puede decirme cómo hacer esto en la vista?

¡Gracias de antemano!

Respuesta

17

puedes probar el siguiente código, suponiendo que object_name es un objeto de ese modelo:

filename = object_name.file.name.split('/')[-1] 
response = HttpResponse(object_name.file, content_type='text/plain') 
response['Content-Disposition'] = 'attachment; filename=%s' % filename 

return response 

Ver la siguiente parte de la documentación de Django en el envío de archivos directamente: https://docs.djangoproject.com/en/dev/ref/request-response/#telling-the-browser-to-treat-the-response-as-a-file-attachment

+0

gracias, funciona – Angelia

+0

¿cómo obtuviste object_name para esa vista? ¿Qué parámetros de URL usaste? – yretuta

+0

El object_name no importa, ya que simplemente representa un objeto Django Model. Puedes recuperar el objeto como quieras. –

Cuestiones relacionadas