00:00
好,那我们继续来上课,那么上节课呢,我们介绍了我们这个文件上传的这些基本需要注意的,那么这节课呢,我们就来执行一下我们的这个文件上传来,那在这里面一样,我们新建一个页面啊,叫做这里边叫09UP。好了,那在这里我们要真正的去执行我们的文件上传了,对吧。执行文件上传,那么通过上节课的分析我们也说过了,那么需要干嘛,在我们上传的那一刻,是不是要把这些都去判断一下对不对,那其中这里面有一个错误号对吧?那这个错误号都表示什么意思呢?咱们来看一下啊,这里面叫做post。看有没有POS的方法上传。怎么搜不到了呢?那收不到了,我就换一个叫做up。No。到了下线Fi来收它啊,当下fis看好了,这里边是不是有个破ose放上传呢?对吧?直接点过来,点过来以后你看这里边在破ose放上传,这里边第一件事是不上你指定了一个,诶哪去了,这哪是不是指定了一个它对不对,然后往下来,你不用管它,再往下看啊,这里边会告诉你每一个这个feels里边每一个选项,你看fields当URL fair是不是表单名称,最后里面这里面是不是有name,有type,有size,有type name有error,对吧?这个error就是我们的错误代码对吧?那咱们看再点击错误代码进来看,其中你看其值为零,表示没有发生错误,文件传成功,也就是文件成功上传到了临时目录里边啊,那其实为一呢?表示什么呀?表示上传的文件超过了PP的ini里面设置什么呀?Upload杠,Ma-fair size权限的值,也就是那个两兆的值对不对?那其实V2呢,上传文件的大小超过了什么?HR表单中设置的这个值。
01:41
看到吗?也就是A表单里边也可以去设置这个选项,但是呢,这个一般我们不设置,为什么?因为一般情况下都是可以要过这个选项啊,要过这个用户啊,一会儿我给大家演示啊。那再往后,其实V3的时候只有部分被上传,这个错误很少能报出来,除非怎么样你上传那一刻突然断网,又又又又又连接,那么这一刻才会遇到这种情况啊,其实为四的时候表示什么?没有文件可以上传,那你看啊,比如说在这里边重新刷新,点击上传,其止为四对不对?按瑞数不是就为四啊,没有上传到临时目录吧?对,那这样我70为六呢,就找不到临时的这个目录对吧?为七呢,是文件写入失败,那就有可能什么目录权限不足,所以一旦有这些错误的时候,我还有必要再去执行上传了吗?是不就没有必要了,也就是说当你传到服务器的时候,传到临时目录这一步过程中都去失败的话,那么PP就没有必要再去上临时目录里面去做判断,去拿这些东西了,对不对,哎,所以在这里面第一件事我们要干嘛判断错号。
02:39
判断错误好,当出号通过以后,第二件事呢,就是判断允许上传的类型啊,对吧,然后接下来什么呀,是不是就判断这个允许或者是接受上传文件接受。判接受传文件。
03:00
大小范围吧,对不对,然后再往后呢,这两个都完事了,接下来干嘛,是不是给上传文件重启名啊,给上传文件重新命名对吧,保证唯一。是不是得保证唯一才行啊,对吧,不然他要替换了对吧,那这个也完事以后接下来干嘛,接下来甚至是移动文件就可以了,移动文件。是不是就执行了上传了,哎,也就是上传文件,我是不是也要做这五步,换句话来说,也就是要把这个里边的每一项是不是都做一个判断了,对不对,哎,那OK。那么先判断错误号。也就是说你看如果。如果什么呢?Dollar下线,这样我们先接收一下啊,来这里边比如说叫做Dollar fill等于Dollar下线,FS里边的叫pic,那这个F是不是就是变成一个一维数组啊,因为它本身是什么,本身是不是一个二维数组啊,你看这里面本身是不是一个二维数组,所以我把它piic带上费里的piic是不是一个一维数组,复制给了这个费,那也就是Dollar fair里边的E,如果大于零是不是有错误,有错误哈,我给他一个提示啊,这个Switch。
04:04
包了里的。K,如果你等于一的时候,代表什么错误对吧?比如说这里边你有错误,咱就直接结束脚本的执行了,我就直接对调了,对吧?哎,这叫结束脚本的执行啊,结束。脚本。的执行跟这个e sit它俩是一样的,对吧,那结束了以后再说一句话,什么话呢?比如说叫什么上传文件大小超过了PP.ii中叫什么max,不对,叫做呃。Upload-max-fair size设置的值对不对?哎,好了,用B可以吗?不用了吧,因为day就已经结束了,所以不需要break对吧,然后再。C等于二的时候呢,叫做Z。叫什么?超过了叫上传文件超过了HTM表单中设置设置的叫什么?叫max?
05:05
Size s设置啊,是不是这样的,那你咱再来看啊,这里边是不是这么写的啊markx刚size OK没有打错对吧?好了,那这个怎么来演示呢?一会我给大家再演示,我把这些都写完了,那case等于三的时候呢,是不是只有部分被上传,那继续对调叫什么呀,只有。部分被上传啊,然后再来K等于四的时候,这就没有文件上传,在这叫叫什么叫做。没有文件上传,然后再来K等于五的时候有五吗?没有吧,是不是直接是六啊,哎,等于六的时候,那叫什么叫做找不到。找不到临时的目录啊,然后在K等于七的时候,是不就最后一个了,那就直接这叫干嘛呀,叫做写入失败是不是这几个选项,那现在咱们来看啊,比如说在这个里边,最后我再给你Apple Apple口一个,哈哈哈哈啊,那现在我要往零九里面传了啊,所以零八这里边我改一下,改成什么,改成零九,往零九里面这边去跳,那现在啊,再回来。
06:08
回来以后再来刷新,如果我什么都不传,直接点击上传文件的话。你看没有文件上传,是不是给我提示了,对不对,哎,是不是就走到了什么,走到了这里边没有文件上传,那后面哈,还有输出吗?是不是也没有,对不对,那还有什么,他说了,他在表单里面是还能设置这个选项,对吧,那咱们就来看呗,在表单这块,在我上传之前,比如说这里边。我来个input叫hid hidden内部名,我起一个名叫什么,就叫max Fi。Le-SI,这是固定的写法,对吧?你允许它上传的大小是多大呢?比如说我允许上是30啊,30个字节啊,这是按字节算的啊,那现在你再来看返回来啊,刷新这句话,我随便点一张图片,它都是大于30个字节了吧,来上传,你看上传文件超过了HR表单中设置mark设置看到了吗?是不是走到了。
07:00
这里边。对不对,那这个东西我说了它不安全,为什么呢?你看好了,它是可以重新改的,因为它是在HTR里面设置的,对吧,那HTR里设置我可不可以改的,你看好了,这里边我选择这个表单,这个表单上面是不是有这个。对不对,默认现在是不是30啊,那好了,我再给你多多两个零,这回看好了选设置完了吧,设置完以后我再选择一张图片来点击上传,你看我能不能传过来,有没有,哈哈哈,有了吧,哎,所以它是可以要过的啊,所以一般针对这个我们不会再去在表单中。这呢啊来他俩换个位置啊,不会在这个表单中,诶表单法这这呢啊来再俩诶我的零九来零七先给它关掉啊,把零九调啊零九好了,不会再去表单再去试试他了,因为是他没什么大用对吧,防防什么防君子不防小人的啊,防君子不防小人的啊能我把它注塑掉了啊把它注射掉了好了,那现在咱们来看,那只要是这个判断它要是过去了,那接下来我是不是要判断它允许上传的这个类型了,对吧?比如说我定义一个Dollar AR或者Dollar type等于AR,我允许你什么类型呢?你看他这里边上传的图片都是什么类型啊。
08:04
在这里边。打印一下啊包了。Fiss啊,来你看刷新一下来。Type类型是什么呀?是不是image gpeg对吧?那比如说对于图片,那我允许你image gpeg的gpeg对吧?还有什么呀,图片是不是还有image-PG的,还有什么image-GIF,就是我允你允许你上传的类型对吧?那接下来我就得判断你上传的类型是不是在我允许的范围内吧?那就可以通过一个函数,什么函数in到a in a RA对吧?判断某个字符串是否在15中出现,哪个字母串呢?是不是fair里边的叫做type这个字母串对吧?如果这个类型要是在我输入中,在这个Dollar type中出现,那就没问题对吧?那给他一个取反是不是不在,当不在的时候我就给它代叫干嘛呀,叫做上传类型不合法是不是就可以了?哎,那上传类型不合法,那现在你来看啊,比如说这回再来,我再来刷新,我这些图片都没问题是吧,我直接点击上传,你看这没问题的,不报错对不对,那好了,如果我换一个。
09:07
重新浏览,嗯,找到。喂。这里边随便来一个来个HTL文件对吧,点击上传,这时候告诉我什么,看是不是上传类型不合法,看到了吗?因为这个类型什么是不是typeb-HHT2了,哎,也就是说这个字符串不在这个数中出现,是不是就不行了,哎那再来还有大小,那大小的话,比如我定义一个Dollar size。Size。等于。一一万个字节对吧,那我就判断,如果你传的这个。包fair里边的这个size s要是怎么样大于我的这个size的话,我定义的size那是不是也一样,给你提示叫什么呀,叫做文件太太大了吧,文件太大了啊太。啊,那现在你再来看啊,比如现在我来重新刷新,刷新一下来这里面再点击,呃,咱就不能让他这张图片了,对吧?来比如说这个图片看看会不会整理。
10:10
没过1万看到了吗?6789对吧,那好了,我们再去选一个图片啊。找到这里边,嗯。最近访问一面积这里诶。来这里的找一张这个图片,点击上传这个图,刚好什么文件太大了,是不是超过1万了,看到了吗?哎,那OK,比如这里边我给他换啊,来个5万吧啊。好了啊,那这是我的大小,是不是就搞定了,搞定完以后,接下来咱说了要干嘛,是不是给上传的文件重新命名,保证它的唯一啊,对不对?哎,还有一件事,其实在这里面不光是这一个,那上传以后的图片你保存到哪啊。对不对?哎,这都是问题吧,所以先不管它啊,我们先把它这个文件名给它做成唯一的,那怎么做唯一的,你看好了,我是不是可以通过它获取它的原文件名对不对,那我就用它原文文件名就行嘛,不一定嘛,那如果别人的文件名也是这个文件名,那是不是就不唯一了,那是不是就会替换掉,对吧?你想想,如果你这个数据库里边,比如说你这里这个账号里面出的都是什么?
11:12
都是这个别人上传的这些头像,那突然两个人头像都是一个名,那是不是就把那个原来那个人的头像给替换掉了,但两个人一登录主俩人头像是不是都一样了,那这样的问题是不是绝对不可能出现了,哎,所以这个时候怎么办?我在这里边去给它重新命名,怎么命名呢?那这里边。第一个我要干嘛过去。圆后缀。摇后对,那是不是就到了SUSU,到了suf f fix等于什么呢?STRCHR,找到找在哪,在这个到了feel里边的name中找到什么点最后出现的这个位置点最后出现的位置是不是就是这个点,GPG是不是它后缀啊,哎,剩下是不是就前面名了,有点了,是不是前面名了,那前面名我怎么做呢?那在这里边我就直接比如说来一个这个Dollar name。
12:03
等于什么呢?等于这个,比如说有UNIQID啊,这个函数是干嘛呢?是返回一个唯一字符串,我在他连连什么,连上一个。一到1万的10万或者1万的嘛,啊,1万的一个随机数有错了啊,这是什么,连上当年的时间戳嘛,对吧,然后再来上MT-run,我再连上一个一到1万的随机数。这样的话,我的名字是不是就保证让他唯一了,对不对,哎,保证唯一以后,接下来干嘛,我再来MD5MD5给他。包一包一起是不是加密返回一个固定的32位长度的一个字,算了,哎,然后再来点连上这连上这个后缀,那你看我的新的图片名是不是就有了,来这里边我们再来刷新看新的图片名是不是就有了,哎,那有了的话,他一定就。能成功吗?一定就不能重复了吗?也不能按保证对吧,万一要是重这个重复了是不是也不行啊,所以为了安全起见,我可以怎么办?来在这里边你看好了,我在这块干嘛呀都。
13:05
循环,还记得do位尔循环吗?哎,Do位尔循环是不是先执行啊,当你执行第一次的时候,我在开始进行判断,判断怎么呀,叫fair。还有一个T谁呢?Dollar name,也就是说如果这个Dollar name存在,如果它存在,我是不是就再循环对不对?哎,如果它不存在,不存在它就为false,为false循环是不是停止了,也就只执行了一次,对吧?那这个时候我来输出这个Dollar内,你再来看。周,你是不是也没问题,对不对,哎,那好了,那有了名字以后,有了名字以后,那接下来干嘛,我是不是就移动文件了,那么移动文件哦,用什么来移动呢?这里边有固定移动文件的函数,就用不着,我们去干嘛是用用这个拷本啊,它有一个专门为文件上传提供的,比如在这里边咱们来看有一叫什么呢?叫做木杠uplo杠,干嘛将上传的文文件移动到新的位置啊,一样给个原名,给一个目标名啊,这里边会干嘛呢?会自带一个htp POS的一个上传机制的一个验证。
14:02
啊,所以我们做文件上传就用这个函数去移动就可以了,那也就是说在这里边我直接木一个upload file,你要将谁要将这个fair。里边的type到name移动到哪里呢?移动到我的name,是不是叫name这个名啊,对不对,哎,这里边没有路径对吧,我们没给路径,就那没给路径是不是当前目录啊,那好了,返回一个什么,返回一个一个结果,那么我在这里来打印结果。高了,绕来这个时候我们再来看啊。重新刷新好了,告诉我么不值的处,那咱们来看在这里边有没有这么一张图片。有了吧,哎,那同样你看我再来刷新一次。没问题。不能,我得重新提交啊,再点击上传。也是不耳之处,这里面是不是又进来了,看到了吧,我再刷新。是不是进来了知道吧,我再刷新是不是都同一张图片,是不是都好使,但你有没有想过,你看所有图片都放到我这里边,跟代码都在一起,是不是就看起来很乱,对吧?所以最好干嘛,最好是我给他能指定一个路径对不对,所以在这块看好了我来指定。
15:09
路径啊,比如说这个路径叫了。Pass等于什么呢?等于upload,等于upload啊,那一样,我给他一个点杠,Upload是不是当前目录啊,哎,那既然是当前目录,那我就可可以判断fair,如果fair杠。这个ten谁呢?Dollar pass如果它存在那没问题,如果它不存在的情况下,我是不是make DR创建这个pass对不对,创建完以后呢?那创建完以后我是不是应该是Dollar了pass里面的这个斜线对吧,连上一个斜线到了内是不是这样的,哎,到了pass里的到内,那是不是解析完就变成什么样了,不是变成这样了,是不是就是这个点杠up load下边那什么什么什么什么什么点PP记。表gpt是不是就是这么样的一个格式了,哎,判断这个路径下的这个图片是否存在了,对吧?如果不存在怎么办?我继如果这个存在,我就继续重新给它声明一个这个名吧,哎,好了,那现在完事以后,接下来移动呢?移动到哪是不是也一样移动到刀了,Pass里边的这个斜线,再连上这个name,那现在我们来看,注意啊,我当前目录是没有这个uplo的,对吧,重新刷新,我来再来选择图片啊,换成这个机,这个叫什么叮当猫啊,机器猫上传。
16:17
文件太大了哦,确实太大了啊,好了,那重新来一个吧,嗯,来行了,来这小人吧,啊来点击上传告不尔之处没问题对吧?再上传不尔之处没问题,再上传不尔之处没问题,好了,现在我传了三张,那我们看LESSON08里边有没有一个upload,有吧,打开upload,这里面是不是三张这个小圆。咱们这样上传是不是成功了。对不对,哎,那OK。那么在我们去写项目的时候,只要是涉及到图片上传的,是不能用的地方很多呀,那这个东西最好是不是要给它封装成一个函数。对不对,那OK,那这节课我们到这里,下节课呢,我们来给它封装函数。
我来说两句