00:01
前面我们讲了果的一个基本的使用啊,集成这个cos的基本使用,那么现在我们来讲一个案例,来实现一个用户上传头像或者上传图片的一个功能。好,首先我们首先我们呢,需要在APP啊cos这个APP当中呢,打开models,我们来写一个model。这个model我们写的比较简单,主要来演示一下我们如何将。这个数据啊,将这个图片数据呢,存储到我们的数据库和存储到我们的云,呃,这个云端啊,呃,首先先写model,那么我们这里简单一点写一个name等于models点。那里面呢,我们写一个。30,呃,再写一个UN吧,等于true。再写一个DB index加索引,呃,这个索引的话就不加了吧,我就这样啊。
01:05
然后photos。这个photo呢,注意。这里呢,我们不去存它的二进制,我们只存它的图片链接。因为我们既然使用云存储,那么这个数据啊,这个图片数据呢,应该是存在云端的啊,因为图片它图片文件视频比较大,不建议大家直接把这个文件或图片啊,直接存到数据库里面去。而是呢,存的是我们上传到云存储服务器之后的一个链接,所以呢,这里用字符串就可以了。我们给一个长度,给个255。这里呢,我就直接写两个啊,当然大家实际真正使用的时候呢,呃,你应该是要写更多的。那我写一个名字和一个图片的链接。写完之后,首先这个model呢要生效是吧,那我们呢,先做一个。数据迁移。
02:02
好在这边。manage.py我们用一个。Make migrations。再写上。manage.pig执行迁移。执行成功之后呢,会在我们这个DB点三当中,我们用的是S。写完这里models之后呢,接下来我们就要使用这个功能,需要写页面。需要写页面啊好,我们打开temp,在这边呢,我们来新建一个HTML。第一步呢,我们先上传啊,我写一个load。佛。点HTML。那么这里面呢,我们就自己写啊好,首先标题我们改一下,这里我们需要做的是上传用户图片的这么一个案例。
03:02
然后在这儿写个标题。这是我们的案例啊,需要上传用户的图片。用一个HR隔开一下啊,这是一个比较简单的HTM。啊,这里的请求方式。因为要上传的是图片,我们写一个POS的请求。Action的话,我们。就默认就可以了。然后需要写一个enc type啊,这里有单词写错了啊,所以它没提示我们重新写一下。应该是phone。Action默认啊,Method等于post。这里要上传文件啊,我们要写上ec等于第一个啊。在用post的时候,这里要注意个问题,我们需要写一个百人号c token。
04:01
好,来写上我们的,呃,第一个我要上传一个用户名,在数据库当中会有一个用户名,每个用户名呢,它自己下面的图片。那我先写一个用户名,用户名呢,我们用text再写一个name。内呢,就等于内。好,这是第一个。第二个。我们要上传的是图片啊,那我们需要选择你要上传的图片。选择图片后面呢,我们要改成cell name呢,我们改成photo吧。这样就可以了,另外呢,需要加一个提交按钮。写一个input type等于sum。好,这样子就可以了。那么这个页面我们需要去用的话,就需要。显示的函数。在四个函数啊,在这边嘛。首先第一个是我们需要做的功能是需要上传啊用户的图片。
05:02
写上一个式的函数啊,我们写一个upload。Photo view。Request。这里做一个if判断,因为等一会儿呢,我们会用到get请求和bos请求,那默认情况下我们使用request.method,然后默认get。像刚才我们去直接访问,因为应该是get请求,Get的请求应该是直接return render request再加我们的。Upload photo。另外我再加一个request.method如果等于post。也就是当我们点击提交按钮,那么就需要将我们的数据给他传过来,对不对?数据传过来,我们需要来接收。接收。用户提交的name和photo。
06:03
啊,我们先用name去等于。request.post。再点get name。是吧?然后再写上photo photo呢,等于request点,注意这里要用到sales.get这里是一张图,我们就用get,然后写上photo。行,这是我们,呃,从前端将数据呢提交到后端,那么在后端我们需要做一个事情,需要将它传入到我们的云存储当中,是不是。传入到云存储当中,就需要我们去上传到腾讯云。的cos。那怎么去上传呢?前面我们讲了一个方法,前面我们讲过一个方法啊。就是在我们的。这个。
07:00
Cos storage当中呢,我们写了一个函数啊往上。往上啊,那这边呢,有一个叫这个这个下载啊,再往上。这边有一个upload的file,那注意一下这个upload file呢,它是会根据情况去执行文件的上传。呃,那么这里面呢,传数据的时候,我们这里需要指定一个本地文件的路径,也就是说你的。这个图片或者文件需要在我本地有,你要给一个本地文件的链接,那么其实还有一个方法,还有别的方法,我们再加一个吧。好,上传对象。因为前面我们也讲了很多的上传的方式,这个我们再给他加一个。DF,我们写上put。Object括号。这里呢,我们还可以怎么写呢?一样,先加一个try response去等于self.client点,我们可以使用object。
08:06
或者object object里面呢,第一个还是我们的深出的C点。八。第二个呢,需要写上body,那么这个是我们的文件流。啊,网络流,那我们写一个body。这个body暂时没有,其实是需要我们从外面传进来,好,我们写一个body。另外还需要一个K才可以好再写个K等于小写K。Jessie。那这样的话,我们可以直接将我们从前端提交过来的文件流直接写到body里面去。那如果说上传成功,我们返回response。如果出现了异常,我们用exception。来捕获一下。好,下面呢,我们就直接return。他也可以去,呃,打印出来它的错误信息。
09:00
我们直接返回浪或者瑞特也可以。写完之后呢,我们再回到我们的view这边。回到力这边,我们来调用一下。来调一下啊。在这里啊。随便。那我们需要上传到我们的这个腾讯云。嗯,我们可以使用刚才的。Q f storage点我们刚才写了一个叫put object对不对?那在里面呢?我们需要传两个东西,第一个是body吧,那么这个body写什么呢?Body直接写我们的photo就可以了。好,你可以认为就是网络流。就是我们的文件数据。图片数据。另外写上KK等于啊,这里要注意一个问题,那么跟用户,我们跟用户绑定一下吧,这里做一个简单的处理啊。
10:06
那么在我们DEMO当中啊,我们这里呢,可能写的会比较简单,大家可以根据实际情况去取名字。好,那么我们如果写个name也是可以的,那点JBG,把扩展名写上去,然后写上K,当然也可以呢,先做一个处理。可以先做一个处理啊,比如说我在这呢,先给他存入数据库。存数据库,写上user等于。我们的user model。Use model在我们models当中已经定义好了,那么需要倒过来,我们在前面。可以from。好点,Models import user model。再回到下。写上user.name name已经存在了,我们可以先把它加进去,Photo呢,要注意这个photo是一个是一个文件流,不要直接加进去啊,我们可以先用user.c先将我们的名字呢存进去,那存进去之后呢,会在我们的这个数据库当中生成一条数据,那这里数据里面呢,就会存在一个ID。
11:16
那么你如果说要用到ID也是可以的,因为ID呢是一个为标识,但如果你用name也是可以的啊,因为我们把名字呢当成了一个唯一吧。也在models当中写了一个UN啊,那实际情况的话,我们一般会根据我们的ID来定啊,呃,这里我可以稍微简单的改一下。那这边呢,我这么写吧,我把user.id。杠。Name或者user点把它都加进去啊,来定义这个名,进这个key啊,这个名字,再把key呢加下去啊,加进去之后。那么就可以了,我们可以在接受一个response。做一个简单的判断啊,如果说not response。
12:02
那就说明呢,我们这里应该是上传失败了,好可以给给一个简单的提示。上传头像或者上传图片呢,失败。然后呢,请重试。做一个简单的提示。否则的话应该是上传成功,如果上传成功。那我们还需要给user呢,去加入这个photo。这个photo我们应该给的是一个链接,就是当我们把我们的图片上传到云服务器之后,啊,上传到腾讯云服务器之后,然后我们需要将腾讯云服务器的这个链接拿过来。那么这个链接是什么呢?好,我们来看一下,现在我这儿是没有图片的啊,我们可以先执行一下这一段,如果他执行成功,那么应该会在服务器呢生成一张图片,并且会有图片链接是不是?那要执行的话,要注意一个问题,现在的模型啊,我们应该是有的啊,刚才已经做过迁移了,那么现在这边的话应该是会报错的。
13:08
因为当你点提交之后呢,我们这里没有返回值。没有返回值啊啊,为了防止报错,我可以先写一个htp response。OK。我们先把上面这一段执行一下,来看一下。来启动一下我们的项目Python manage。点PY染色。我们打开。在后面呢?好,我们这里还需要做一个事情。还少加了一个东西是不是。打开我们的URL。加一个路由啊。好,我们把它加上去。
14:02
好,可以了。那么现在我们的upload。Photo呢就可以用了啊。把它加到这儿回收。那现在页面可以了,然后我们可以在这里面呢,输一个名字。我们写一个IG,大家自己写个名字,然后选择我们的图片。比如说选择这张。然后点击提交。提示的是OK。那么这里提示OK之后我们要看,呃,后台呢,它并没有报错啊,应该是成功的,然后看一下这边。来看一下第一个,那后面呢,有一个详情有个预览,点击预览。图片摄像是成功的,然后点击详情。在详情当中,我们可以看到这边呢有一个地址对不对,这个地址我们可以拿过来,然后在浏览器当中尝试打开,可以看到可以访问。那可以访问的话,我们可以拿过来用一下。
15:03
怎么用呢?回到view适度函数这边。好,我们到下方。这里的photo,这个photo的链接。我们要加到数据库里面去的话,应该是这样写,HTTPS,前面这个呢,是我们的存储的名称。那么你这里如果一样的话,就啊就不用改啊,那直接这么写,或者你从C当中倒过来也可以,那这是我们的这个啊地域对不对。然后最后呢,他其实最后有一个问题,就是这个地方。一杠h.JBC,它其实是什么呢?是不是我们前面的K加上F?这是我们的K啊,所以我们把后面的K呢改一下。改一下之后呢,再把它存进去。user.save帮你写。要把它同步到我们的数据库里面去啊好。好,我们。
16:00
写上李四。然后选择头像,我们换一个图吧,换一个兔子的。点击提交好,显示OK,然后再看。存储的这边刷新图片是有的。然后数据库这边呢,我们刷新可以看到名字和图片链接其实都有,对不对,那么这个图片链接我们后面就可以直接使用。那么我们使用这个腾讯云存储啊。一个好的地方是什么呢?我们不需要在自己本地开辟大量的内核硬盘去存储啊,去存储我们的这个图片,因为图片本身还有包括视频啊,包括很多大文件,它本身比较大,都存在本地的话也不合适,那我们存在云服务器更更利于我们去管理。好了,这是如何去将图片上传?
我来说两句