介绍
这篇文章将为大家详细讲解有关使用Django怎么实现文件上传下载功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创建项目:
django-admin startproject file_upload cd file_upload python manage.py  startapp 上传
目录结构:
0.设置。py
LANGUAGE_CODE =, & # 39; zh-Hans& # 39; 时间=TIME_ZONE & # 39;亚洲/上海# 39; USE_I18N =,真的 USE_L10N =,真的 时间=USE_TZ 假
1.的url。py
父:
得到django.contrib import 管理 得到django.urls import 路径,包括 , urlpatterns =, ( ,路径(& # 39;管理/& # 39;,,admin.site.urls), ,路径(& # 39;上传/& # 39;,,包括(& # 39;uploader.urls& # 39;))
子:
得到django.contrib import 管理 得到django.urls import 路径,包括 得到只import 观点 , 时间=app_name & # 39;上传# 39; , urlpatterns =, ( ,路径(& # 39;& # 39;,,views.upload,, name=& # 39;上传# 39;),,#,上传 ,路径(& # 39;列表/& # 39;,,views.list),, #,列表 ,路径(& # 39;下载/& lt; id> & # 39;,, views.download,, name=& # 39;下载# 39;),,#,下载 ,路径(& # 39;删除/& lt; id> & # 39;,, views.delete,, name=& # 39;删除# 39;),,#,删除 )
2.的模型。py
得到django.db import 模型 得到django.utils import 时区 , & # 39;& # 39;& # 39; 文件记录 & # 39;& # 39;& # 39; class FileInfo (models.Model):=,,file_name  models.CharField (max_length=500)=,,file_size  models.DecimalField (max_digits=10, decimal_places=0)=,,file_path  models.CharField (max_length=500)=,,upload_time  models.DateTimeField(默认=timezone.now ())
3.形式。py
得到django import 形式 , & # 39;& # 39;& # 39; 上传表单 & # 39;& # 39;& # 39; class UploadForm (forms.Form):=,,file  forms.FileField ( ,小部件=forms.ClearableFileInput (attrs={& # 39;多个# 39;:,真正}),,#,支持多文件上传 ,标签=& # 39;选择文件……& # 39;, ,help_text=& # 39;最大猴100 # 39; 之前,)>4.的观点。py
得到django.shortcuts import 呈现 得到django.http import  HttpResponseRedirect 得到django.http import  HttpResponseRedirect 得到django.http import  FileResponse 得到django.template import  RequestContext 得到django.urls import 相反 得到django.utils.http import  urlquote , 得到.models import  FileInfo 得到.forms import  UploadForm import 操作系统 , , #,上传文件 def 上传(请求): ,# Handle file 上传==,if request.method & # 39;文章# 39;:=,,form  UploadForm (request.POST, request.FILES) ,if form.is_valid (): files 才能=,request.FILES.getlist(& # 39;文件# 39;) for 才能;f 拷贝文件: 时间=file_info 才能;FileInfo (file_name=f.name, file_size=1, if 0, & lt;, f.size & lt;, 1024, else f.size /, 1024年,file_path=os.path.join (& # 39; D: \ \上传# 39;,,f.name)) file_info.save才能() #,才能上传 destination =,开放才能(os.path.join (“D: \ \ upload",, f.name),, & # 39; wb + & # 39;) for 才能;chunk 拷贝f.chunks (): ,,destination.write(块) destination.close才能() , #,才能返回上传页 return 才能;HttpResponseRedirect(& # 39;/上传/列表# 39;) ,其他的:=,,form  UploadForm (), #, A 空,unbound 形式 ,return 渲染(请求,,& # 39;上传/upload.html& # 39;,,{& # 39;形式# 39;:,形式}) , , #,文件列表 def 清单(要求):=,,file_infos  FileInfo.objects.all () , ,return 渲染(请求,,& # 39;上传/list.html& # 39;,, {& # 39; file_infos& # 39;:, file_infos}) , , #,下载文件 def 下载(请求,,id):=,,file_info  FileInfo.objects.get (id=id) ,打印(& # 39;下载的文件名:& # 39;,+,file_info.file_name)=,file 开放(file_info.file_path, & # 39; rb # 39;)=,,response  FileResponse(文件) ,响应[& # 39;附加# 39;],=,& # 39;附件;文件名=? s" & # 39;, %, urlquote (file_info.file_name) return 响应 , , #,删除文件 def 删除(请求,,id):=,,file_info  FileInfo.objects.get (id=id) ,file_info.delete ()=,,file_infos  FileInfo.objects.all () , null使用Django怎么实现文件上传下载功能