flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

静态文件处理

一、静态文件处理

通常页面中需要包含很多的静态文件,比如图片、音乐、视频等,才能使页面表现的更生动。
另外,页面中引用的外部CSS、JS文件也需要作为静态文件在页面中使用。
这些都需要Flask与Jinja2模版引擎提供支持。
默认设置下,Flask 在程序根目录中的static子目录中寻找静态文件。
常见的static目录结构如下所示:
在这里插入图片描述[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fz6HxzIc-1576636543469)(img/1576632370680.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nnuu2QvG-1576636543470)(img/1576632662876.png)]
只显示用户名

增加:查看用户信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BH8MkZiB-1576636543470)(img/1576632454947.png)]
定义新的info.html 写到templates文件夹里面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KsJih1ms-1576636543471)(img/1576632619131.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F1LOeRKQ-1576636543471)(img/1576632672387.png)]

加入头像

创建static文件夹
1576632718709.png
创建img等

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cI1QSAKd-1576636543472)(img/1576632743001.png)]
放头像到img
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yNQiBfC4-1576636543472)(img/1576632764983.png)]
改名字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1yksZQj4-1576636543472)(img/1576632784599.png)]

可以去掉扩展名,一样可以显示头像
1576632864263.png
这样用户名和头像名一一对应比较好处理

info.html

img标签

static文件夹里面的图片要怎么添加到src里面呢?
1576632984021.png

设置头像大小。只调整宽度就好,等比例缩放。

如果用户没有图像,他这个里面会默认是一个碎图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7JTDg6Yw-1576636543473)(img/1576633038604.png)]
效果:

flask底层的配置是可以修改的,在app.py里面加上config可以实现。为了调整迁移,可以动态产生链接

扫描二维码关注公众号,回复: 8660687 查看本文章

根据flask的配置找静态文件的图片

找static功能的文件夹,用url_for()函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KYwa542Q-1576636543474)(img/1576633228290.png)]
代码:注意是+name
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1fZw9pxC-1576636543474)(img/1576633266969.png)]
效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2CLT4VQH-1576636543475)(img/1576633279078.png)]

设置样式

创建js文件
1576633514188.png
怎么引进来呢1576633574555.png1576633561759.png

总结:写static的路径的时候,最好不要写死,不方便迁移和改配置。

二、文件上传

原来的modify
在这里插入图片描述

input标签的type

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2v5TVHOJ-1576636543477)(img/在这里插入图片描述

checkbox复选框

file文件

color颜色选择框

datetime时间选择器

email需要格式检查 要加js不方便 一般用text

password会把输入的变成小圆点

上传文件file

不是文件名是对象名,
在这里插入图片描述

一种虚拟对象avator

在这里插入图片描述
form里面要多一个enctype针对你上传的东西的一个格式

之前上传的是文本没关系

但是我们要上传文件的话,类型不一样了,各种各样的

多种样式的表单数据

所以,要上传文件的时候,一定要在form里面多一个enctype

在这里插入图片描述

要加一个文件的取出

在form里面,form本身是一个字典

查看一下form的keys
在这里插入图片描述
遍历form里面 的info

结果没有,我们已经上传了,但是没有到form里面来
在这里插入图片描述
原因 她不在form里面,他在files里面,s表示可以上传多个文件
在这里插入图片描述

avatar

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oov7Kl6l-1576636543480)(img/在这里插入图片描述
文件拿到了,还没有处理它,怎么保存到我们自己的服务器

先提取对象

在这里插入图片描述

保存对象

它自己有save保存函数哦

List item

看看他会自己存到哪儿去

不行

save需要文件名
按照name保存

在这里插入图片描述

按照原来文件自己的名字保存:

在这里插入图片描述

保存路径

它自动保存到了app.py一样的路径,我们设置它保存的位置到upload
在这里插入图片描述在static下创建upload

怎么设置路径呢?

来一个os模块 关于路径的

项目文件夹的绝对路径
在这里插入图片描述abspath绝对路径

dirname文件夹!!!名字

查一下当前文件的所处路径
在这里插入图片描述这个__name___的意思就是当前文件

去掉后面的app.py,我们要前面的
在这里插入图片描述
打印看一下项目绝对路径
在这里插入图片描述

确定上传的文件夹路径

专门有一个join函数,不要自己去拼接,容易正反斜杠混淆,这样跨平台性会好一些的。
在这里插入图片描述

我们可以去upload的路径了

之前的路径放在了全局变量中,可以直接用
在这里插入图片描述直接用用户名作为文件名称,这样不容易撞,防止不同用户的自己的文件名字一样
在这里插入图片描述改info信息
在这里插入图片描述

效果

原来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wxhhnvgZ-1576636543486)(img/在这里插入图片描述
改完
在这里插入图片描述
上传的头像都在upload里面,本来有的会被替换掉,本来没有的会增加到
在这里插入图片描述

注意 get请求是上传不了文件的

文件的上传都是post请求,不带源码的

get的所有请求,会进入到url里面去
在这里插入图片描述
如果改成了GET,修改数据会显示到url
在这里插入图片描述
如果改成了GET,上传图片文件的时候url只是会有一些字符串的文件名,这样上传不了任何什么的,所以必须要post来提交相关很多信息。
在这里插入图片描述

发布了20 篇原创文章 · 获赞 2 · 访问量 502

猜你喜欢

转载自blog.csdn.net/qq_35456045/article/details/103593222