关于如何搭建Django服务器的教程很多,不赘述啦
from django.http import HttpResponse, StreamingHttpResponse, FileResponse
from django.shortcuts import render, render_to_response
from django.views.decorators.csrf import csrf_exempt
#from models import PathItem, FileItem
import os
@csrf_exempt
def Hello(request):
return render(request, 'Hello.html')
@csrf_exempt
def file_Download(request):
#camera.exe为要下载的文件,放在templates文件里
file = open('D:\Server\pro1\templates\camera.exe', 'rb')
response = FileResponse(file)
response['Content-Type']='application/octet-stream'
response['Content-Disposition']='attachment;filename="camera.exe"'
#这里的filename指的是下载时候的文件名
return response
经过测试,FilResponse的方式比使用StreamingHttpResponse和HTTPResponse的方式都要稳定,且可以传输exe文件。
from django.conf.urls import url
from django.contrib import admin
from pro1.view import file_Download
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^download/', file_Download),
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
通过修改templates参数,设置templates文件夹为与manage.py在同一级的目录下,在该目录下建立templates文件夹,将要下载的文件放入其中即可。在这里为camera.exe。
通过命令 python manage.py runserver 0.0.0.0:8000
运行服务器,通过访问 ip:8000/download 获取要下载的文件 其中ip为运行Django服务的主机ip地址