1、文件上传
(1)前端代码
<div class="upload_file">
<h4 style="margin-bottom: 5px">上传CSV数据集</h4>
<form action="/dataAnalysis/show_decision/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" required name="csv_file">
<p></p>
<input type="submit" class="update" value="上传CSV数据集">
<p style="color: #66c968">{{ message }}</p>
</form>
</div>
(2)后台代码
# 上传文件
def show_missdata(request):
if request.method == "POST":
f = request.FILES['csv_file']
file_path = os.path.join('media/upload', f.name)
with open(file_path, 'wb') as fp:
for info in f.chunks():
fp.write(info)
fp.close()
message = '上传成功'
(3)在settings.py文件里添加文件上传配置
# 设置文件上传路径,图片上传、文件上传都会存放在此目录里
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
(4)url配置
url(r'show_decision/$', views.show_decision, name='show_decision'),
2、文件下载
(1)前端代码
<div class="download">
<h4 style="margin-bottom: 5px">导出CSV数据集</h4>
<p></p>
<form action="/dataAnalysis/download/" method="post">
{% csrf_token %}
<input type="submit" value="导出CSV数据集"/>
</form>
</div>
(2)后台代码
# 文件下载
def download(request):
local_filename = "media/csv/"
filename = os.listdir(local_filename)
filename.sort(key=lambda fn: os.path.getatime(local_filename + fn) if not os.path.isdir(local_filename + fn) else 0)
# d = datetime.datetime.fromtimestamp(os.path.getmtime(local_filename + filename[-1]))
# print('最新生成的文件是' + filename[-1] + ",时间:" + d.strftime("%Y{y}%m{m}%d{d}%H{h}%M{m1}%S{s}").format(y='年',m='月',d='日',h="时",m1="分",s="秒"))
# print(filename[-1])
file = open('media/csv/{}'.format(filename[-1]), 'rb')
response = FileResponse(file)
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = "attachment; filename*=utf-8''{}".format(escape_uri_path(filename[-1]))
return response
(3)url配置
url(r'download/$', views.download, name='download'), # 数据集下载