Django实现文件上传和下载

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'),  # 数据集下载
  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值