静态文件处理

一、静态文件处理

通常页面中需要包含很多的静态文件,比如图片、音乐、视频等,才能使页面表现的更生动。
另外,页面中引用的外部CSS、JS文件也需要作为静态文件在页面中使用。
这些都需要Flask与Jinja2模版引擎提供支持。
默认设置下,Flask 在程序根目录中的static子目录中寻找静态文件。
常见的static目录结构如下所示:
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
只显示用户名

增加:查看用户信息
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
定义新的info.html 写到templates文件夹里面
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

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

加入头像

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

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

可以去掉扩展名,一样可以显示头像
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
这样用户名和头像名一一对应比较好处理

info.html

img标签

static文件夹里面的图片要怎么添加到src里面呢?
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

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

如果用户没有图像,他这个里面会默认是一个碎图
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
效果:
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
flask底层的配置是可以修改的,在app.py里面加上config可以实现。为了调整迁移,可以动态产生链接

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

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

flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
代码:注意是+name
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
效果:
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

设置样式

创建js文件
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
怎么引进来呢flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

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

二、文件上传

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

input标签的type

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2v5TVHOJ-1576636543477)(img/flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

checkbox复选框

file文件

color颜色选择框

datetime时间选择器

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

password会把输入的变成小圆点

上传文件file

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

一种虚拟对象avator

flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
form里面要多一个enctype针对你上传的东西的一个格式

之前上传的是文本没关系

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

多种样式的表单数据

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

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

要加一个文件的取出

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

查看一下form的keys
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
遍历form里面 的info

结果没有,我们已经上传了,但是没有到form里面来
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
原因 她不在form里面,他在files里面,s表示可以上传多个文件
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

avatar

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oov7Kl6l-1576636543480)(img/flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
文件拿到了,还没有处理它,怎么保存到我们自己的服务器

先提取对象

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

保存对象

它自己有save保存函数哦

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

看看他会自己存到哪儿去

不行

save需要文件名
按照name保存

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

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

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

保存路径

它自动保存到了app.py一样的路径,我们设置它保存的位置到upload
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件在static下创建upload

怎么设置路径呢?

来一个os模块 关于路径的

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

dirname文件夹!!!名字

查一下当前文件的所处路径
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件这个__name___的意思就是当前文件

去掉后面的app.py,我们要前面的
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
打印看一下项目绝对路径
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

确定上传的文件夹路径

专门有一个join函数,不要自己去拼接,容易正反斜杠混淆,这样跨平台性会好一些的。
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

我们可以去upload的路径了

之前的路径放在了全局变量中,可以直接用
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件直接用用户名作为文件名称,这样不容易撞,防止不同用户的自己的文件名字一样
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件改info信息
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

效果

原来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wxhhnvgZ-1576636543486)(img/flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
改完
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
上传的头像都在upload里面,本来有的会被替换掉,本来没有的会增加到
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

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

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

get的所有请求,会进入到url里面去
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
如果改成了GET,修改数据会显示到url
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件
如果改成了GET,上传图片文件的时候url只是会有一些字符串的文件名,这样上传不了任何什么的,所以必须要post来提交相关很多信息。
flask静态文件处理-上传头像-保存图片-上传文件-项目绝对路径-get上传不了文件

相关文章:

  • 2022-12-23
  • 2022-02-07
  • 2021-11-01
  • 2021-07-11
  • 2022-12-23
  • 2021-06-20
  • 2021-12-03
  • 2021-11-15
猜你喜欢
  • 2022-01-05
  • 2022-12-23
  • 2022-12-23
  • 2022-02-07
  • 2021-11-25
  • 2021-05-11
  • 2022-12-23
相关资源
相似解决方案