python+django 如何上传文件和下载文件

Models 中新建了一个模型,并且设置 path 为 FileFiled 格式的 这样就可设置为文件属性了,在django-web上上传文件时,path为文件的路径,相信这点官网已经写的非常详细了 下面记录下如何指定文件的存储路径、文件访问路径、文件下载

存储文件

存储文件需要指定文件的存储路径 在 settings.py 文件中增加字段: MEDIA_ROOT 例如: 当在自己的电脑上模拟运行时可以指定为

MEDIA_ROOT = os.path.join(BASE_DIR, 'Files')

这样会在项目根目录下创建一个名称为"Files"文件夹 所有上传的文件都会存储到这个文件夹下面 当然,线上肯定将文件放置公司服务器上,路径做相应的修改。

访问路径

访问路径就是在web或者APP等上面访问该文件的路径 在 settings.py 文件中增加字段 MEDIA_URL 例如:

MEDIA_URL = '/Files/'

并且你的服务地址为:127.0.0.1:8000 则访问路径为 127.0.0.1:8000/Files/文件名称

下载文件

在访问路径设置好后,如果这个时候去访问文件,会发现根本访问不到。 提示“该文件不存在”等提示 为什么呢? 因为没有将访问路径映射到本地文件路径 例如: 访问: 127.0.0.1:8000/Files/文件名称 需要将路径映射到: /Users/***/Desktop/ProjectName/Files/文件名称

如何映射

在urls.py 文件中增加静态文件的映射

# 静态文件的访问
from django.conf.urls.static import static
import settings

urlpatterns = [
    
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

如此便可以很好的访问·下载文件了

补充:文件重命名

当我们上传一个文件到服务器时,希望重新更改一下该文件的名称和路径 在models 里面模型创建的时候指定

class TestModel(models.Models):
path = models.FileField(verbose_name='路径',
                            upload_to=upload_to,
                            help_text='只能是 zip 文件')

注意 upload_to 则为自定义文件名称·路径的方法

def upload_to(instance, fielname):
    # 后缀
    sub = fielname.split('.')[-1]
    t = time.strftime('%Y%m%d%H%M%S', time.localtime())
    return 'test1/namespace/%s.%s' % (t,sub,)

如上实现: 会将文件名称更改为时间戳,并且在 MEDIA_ROOT 下新建两层文件夹 test1/namespace ,将文件放置在 namespace 下。

如此是文件操作的设置

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端儿

Sublime插件支持Sass编译和Babel解析ES6 & .sublime-build文件初探

如果要将Sass编译成css文件,安装相应的编译工具就行,然后在命令行直接sass a.scss:b.css 编译就行了

14020
来自专栏yang0range

React Native在Android当中实践(二)——搭建开发环境

React Native在Android当中实践(一)——背景介绍 React Native在Android当中实践(二)——搭建开发环境 React Na...

9940
来自专栏九彩拼盘的叨叨叨

软件推荐

9710
来自专栏晓晨的专栏

发布你的程序包到Nuget

12630
来自专栏逸鹏说道

Win10 IIS本地部署MVC网站时不能运行?

网站部署之~Windows Server | 本地部署 一、服务器系: 1.初始Windows Server 2012 R2 Hyper-V + 系统安装详细 ...

41690
来自专栏云计算教程系列

使用nano在Linux中编辑文件

GNU nano,简称nano,是大多数Linux发行版的基本内置编辑器。GNU nano是一个小巧友好的文本编辑器. 与基本的文本编辑相比,nano提供许多额...

13640
来自专栏刘望舒

React Native入门(一)环境搭建与Hello World

前言 目前关于React Native的教程很多,官方文档写的也不错,但是感觉大部分教程写的不是很清楚,导致我各种碰壁。因此我来写一个简洁的教程。本篇文章基于...

21950
来自专栏自由而无用的灵魂的碎碎念

将windows server 2016改造为像windows 10一样适合个人使用的系统

Windows server 2016 RTM已流出,具体可以搜索wzor大神泄露的,英文版本是0911的。现根据我安装后整理的如何配置使个人更适合使用。

33440
来自专栏.NET技术

elasticsearch同步mongodb--mongo connector的使用

mongodb-win32-x86_64-3.4.6-signed.msi  (如果已经安装可以忽略)

32420
来自专栏哈雷彗星撞地球

你知道如何为iOS工程改名吗?

我们在iOS开发中,难免会遇到项目做到一半要改名字的情况。如果项目名差的太大,工程名看起来总是不舒服的,有良心的开发者可能就会想着为工程改个贴切的名字,那么你就...

16730

扫码关注云+社区

领取腾讯云代金券