Django实现文件传输

0x01 搭建Django服务器

关于如何搭建Django服务器的教程很多,不赘述啦

0x02 修改views.py

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文件。

0x03 修改urls.py

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),
    
]

0x04 修改settings.py 

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。

Django实现文件传输_第1张图片

0x05 测试 

通过命令  python manage.py runserver 0.0.0.0:8000

运行服务器,通过访问 ip:8000/download 获取要下载的文件  其中ip为运行Django服务的主机ip地址

Django实现文件传输_第2张图片

你可能感兴趣的:(Django实现文件传输)