首页
Django如何上传文件

Django如何上传文件

01-23 10:47:22
609
2

Django上传文件

一般的情况下,我们可以使用django自带的file和image字段,来实现自动上传文件,不需要额外的代码来实现上传。

在一些自己的页面,就需要手动实现文件上传了,我们这篇文章用原生的方式来实现文件的接收和写入磁盘。

代码如下:

def upload(request):
    files = request.FILES
    # 只上传一张
    rs = {
        'status': -1,
        'url': ''
    }
    dir_path = 'uploads/'
    base_dir = os.path.join(settings.MEDIA_ROOT, dir_path)
    if not os.path.exists(base_dir):
        os.makedirs(base_dir)

    for i in files:
        buffer_file = files.get(i)
        name, suffix = os.path.splitext(buffer_file.name)
        filename = get_short_id() + suffix
        f = open(os.path.join(settings.MEDIA_ROOT, dir_path, filename), 'wb+')
        for chunk in buffer_file.chunks():  # 分块写入文件
            f.write(chunk)
        f.close()
        rs['status'] = 0
        rs['url'] = os.path.join(
            settings.MEDIA_URL, dir_path, filename)
    # 如果要传多张,就移除这个break
        break

    return rs
评论(2)