文件上传 (2)
文件上传
经常用于:
1, 对于发表内容或贴子时的一个附件
2, 资料共享的一个附件,文件
3, 头像上传时的一个文件上传
就是把客户本地的文件上传到服务器上去,客户可以直接在网页中查看或下载
写表单:
第一个注意项:上传的时候方法必须要为post方法
第二个注意项:修改enctype
第三项:为了防止用户传过大的文件,我们通常会写上一个隐藏表单,MAX_FILE_SIZE,将其值设为value=”byte单位的值”,防止用户等待时间过长。这一项,现在无效。【臭臭】
我们一起在实验的时候,我们发现了这样一个特点:
Post发的,在php端用$_POST来接,接收不到。$_FILES来进行接收。
英文:
Enctype 编码方式 multipart/form-data
Upload 上传
File 文件
Size 大小
文件上传七伤拳。
1,看数组结构 【本质上面,我们就是在操作这个数组】
2,判断文件是否有错误
3,判断文件大小
4, 判断文件后缀是否在准许的后缀
5,判断文件MIME类型
6,判断是否是上传文件
7,移动文件 [按照日期生成子目录来保存文件,产生随机的文件名]
看数组结构:
这是一个二维数组,看着大纲来进行. 数组当中的第一个下标为表单里面的名称。
这个数组当中第一个下标对应了一个新数组。
新组当中的第一个元素下标为name,值为文件的原名。
新数组当中的第二个元素为type,类型。文件的mime类型。Mime,认文件类型认的更加准确。MIME是给浏览器和电脑人的,不是给人看的吧。
Tmp_name 临时文件路径 是将用 户上传的文件放入操作系统的临时目录下面。【以后是将其移动到指定目录下面来的】
Error 错误,上传是否有错误 0叫上传成功
Size 文件滴大小
第二拳:
判断错误 如果无错,返回一个0,自动类型转换为bool值的假
1,我们可以强制取反
2,我们可以显示错误,有错误就停止上传,如果无错误,就继续执行上传段代码
错误为0 无错
1 超过了php.ini当中的max_upload_size这一项准许的值
通常情况下为2M,但是,可以手动修改。不能超过POST最大准许大小
post_max_size =
php可以使用的内存限制 memory_limit =
2 超过了表单的MAX_FILE_SIZE指定的大小
3 部份文件被上传
4 没有文件被上传
6 找不到临时文件夹 upload_tmp_dir = 手动指定临时文件夹所在的目录
7 文件写入失败
第三拳,
判断文件大小
第四拳
判断后缀
第五拳
判断MIME
第六拳
Is_uploaded_file 传进上传的临时文件,判断这是不是我PHP上传的文件
第七拳
Move_uploaded_file 移动上传文件(临时文件路径, 新路径和新名)
扩展一个函数
Uniqid() 产生一个唯一的ID
注意:
请在文件上传的时候目录一定要加斜线,不加斜线,在移动的时候,就会和文件名拼接。
下载
1, 告诉浏览器类型
2, 告诉浏览器这是附件
3, 告诉浏览器大小 [可选]
4, 读取并输出文件内容 readfile