瓶上传自定义头像的实例详解

  

Web开瓶发这本书基本上做完了,后面还需要温习,但是自己做的博客总觉得简陋了点,所以,在动脑子开发新功能

  

<强>今天想到最基本的功能,自定义头像

  

那这样的功能,设计到2大基本功能块

  

1:如何进行文件的上传和保存

  

2:如何在用户模型里面将头像照片和用户挂钩起来

  

第二个问题我在查阅了网上的讨论后,得出基本上2种方法,

  

第一种是将图片变成二进制以后存入数据库

  

第二种是将图片直接存放于文件系统中

  

先研究如何上传文件成功这个事情

  

<强>从最简单的开始

  

在主要的看法文件内,添加以下准备工作

        进口操作系统   从进口瓶瓶,请求重定向,url_for      UPLOAD_FOLDER=r说:\ flasky \ app \上传”      

设置UPLOAD_FOLDER的路径,表示文件最终要存在哪一个位置

        @main。路线(“/upload_file”方法=[‘得到’,'文章'])   def upload_file ():      #……   如果请求。方法==癙OST”:   文件=request.files(“文件”)   file.save (os.path.join (UPLOAD_FOLDER, file.filename))   返回的& lt; p> success</p>”   返回“   & lt; !DOCTYPE html>   & lt; title>改变新的icon   & lt; h2>上传新的& lt;/h2>   & lt;形式行动=" " method=" post " enctype=多部分/form-data>   & lt;输入类型=拔募钡拿?file>   & lt;输入类型=疤峤弧奔壑?https://www.yisu.com/zixun/Upload>    "      

然后为上传文件功能单独做一个路由,是专门用一个页面来提供上传文件

  

文件=request.files(“文件”)表示,从请求请求的文件字典中,取出文件对应的文件。这个文件是一个FileStorage对象,这个我们后面再讲

  

这个文件对象拥有一个函数功能来保存文件,叫做保存()

  

这个文件对象还拥有一个属性来提取文件名,叫做文件名

  

他的参数就是路径名称

  

如上面代码,我用了os.path.join拼接的方法来做出保存路径名

  

至于提交保存以后的返回页面,我先简单做了一个显示成功的页面表示功能成功

  

而整个页面的渲染,直接在返回里面写入了这个表单,我们来看看功能

  

PS:在用户资料页面,我已经加入了按钮来通向更改头像的页面,这个就不多说了

  

瓶上传自定义头像的实例详解

  

瓶上传自定义头像的实例详解

  

好,最重要的一环节上传文件已经完成了,接下来的工作就是对代码的完善了

  

比如,添加指定允许文件类型的范围

        ALLOWED_EXTENSIONS=组([txt, pdf, png, jpg, jpeg、gif的])      

于是乎,代码变成了

        UPLOAD_FOLDER=r说:\ flasky \ app \上传的   ALLOWED_EXTENSIONS=组([txt, pdf, png, jpg, jpeg、gif的))      def allowed_file(文件名):   返回的。在文件名和filename.rsplit('。', 1)在ALLOWED_EXTENSIONS [1]      @main。路线(“/upload_file”方法=[‘得到’,'文章'])   def upload_file ():   如果请求。方法==癙OST”:   文件=request.files(“文件”)   如果文件和allowed_file (file.filename):   file.save (os.path.join (UPLOAD_FOLDER, file.filename))   返回的& lt; p> success</p>”   返回“& lt; p>你上传了不允许的文件类型& lt;/p>”   返回“   & lt; !DOCTYPE html>   & lt; title>改变新的icon   & lt; h2>上传新的& lt;/h2>   & lt;形式行动=" " method=" post " enctype=多部分/form-data>   & lt;输入类型=拔募钡拿?file>   & lt;输入类型=疤峤弧奔壑?https://www.yisu.com/zixun/Upload>    "      

好,讲到这里,就要回过头来看看瓶官方文档的说明了

  

首先第一点,请求的文件属性

  

瓶上传自定义头像的实例详解

  

所以说,非常方便,可以通过文件。文件名,直接获取文件的名字

  

另外,这个文件对象,可以直接用保存功能储存,2可以有2个参数,一个是dst表示存放路径,第二个是缓存尺寸,表示在存储过程中的大小,默认16 kb。

瓶上传自定义头像的实例详解