May 3, 2021, 10:23 a.m.
" How to download a file in django | Making a large file downloadable from a url in django | How to serve Large files in django | Downloading a file from Django project directory "
This is a simple thing in Django. You can serve any file from any directory (i.e inside project directory) using a URL in Django. Just follow the steps shown below and you will find that some line of code will help you to do that.
If file is binary: Add the following url in urlpatterns.
#In urls.py
path('download/',views.download,name="download"),
path('download/',views.download,name="download"),
Now set the function in views.py i.e. download() as mapped in urls.py
#In views.py
from django.http import FileResponse
import os
def download(request):
file_path = os.path.join(BASE_DIR, 'myfile.zip')
response = FileResponse(open(file_path, 'rb'))
return response
from django.http import FileResponse
import os
def download(request):
file_path = os.path.join(BASE_DIR, 'myfile.zip')
response = FileResponse(open(file_path, 'rb'))
return response
So now if someone visits "www.example.com/download" the downloading of file i.e "myfile.zip" will starts.
Note that if the file is not binary then you have to use 'r' instead of 'rb' in your code.
If file is a text/utf-8 file: If you only want to show the text content of the file then you can use the following code:
#In views.py
from django.http import FileResponse
import os
def download(request):
file_path = os.path.join(BASE_DIR, 'requirement.txt')
f = open(file_path, 'r')
file_content = f.read()
f.close()
return HttpResponse(file_content, content_type="text/javascript")
from django.http import FileResponse
import os
def download(request):
file_path = os.path.join(BASE_DIR, 'requirement.txt')
f = open(file_path, 'r')
file_content = f.read()
f.close()
return HttpResponse(file_content, content_type="text/javascript")
In this case the text content of the file will be server in the browser or client device.
Now, if the file is strored in database models/fields then you can do something like this:
#In views.py
from django.http import FileResponse
import os
def download(request):
obj=mymodel.objects.get(id=someid)
response = FileResponse(open(obj.fileField.path, 'rb'))
return response
from django.http import FileResponse
import os
def download(request):
obj=mymodel.objects.get(id=someid)
response = FileResponse(open(obj.fileField.path, 'rb'))
return response
Some recent posts
How to deploy a django website on pythonanywhere | django Web app deploying...
Complete process of changing database from SQLite to MySQL - How to migrat...
" How to download a file in django | Making a large file downloadable from ...
How to use proxy in python requests | http & https proxies - Scraping...
Top Django Querysets, How to filter records | Fetching data from database e...
How to change base url or domain in sitemap - Django ...
How to Make a Website - Everything you should know about web development...
What is Javascript - Features and usages ...
Top 5 Interview Questions : Tips for HR round ...
How to get job in IT : Perfect resume guide for IT job ...
View all...
Popular Posts
How to compress image before saving to DBMigrating from SQLite to MySQL in Django
Choosing correct M.2 SSD
How to deploy a web app on pythonanywhere
5 Steps to create sitemap in Django
How to send mails automatically in Django
Handling arguments in django urls
Media and Static configuration in Django
Language Translation & detection using python
React Js vs Angular Js
5 Tips to improve Programming Logics

- May 7, 2021, 2:11 p.m.