文件上传------图片
文件上传,拿上传图片做个例子
首先要写个form表单,之前是提交数据的,现在要上传文件提交图片,所以要在后面多加一个属性
然后再选择文件,最后上传
来看一下第一个页面的代码部分
运行后看一下效果
在这里不同的浏览器运行后,会出现不一样的样式,但是功能都是一样的用,点击浏览后,会弹出选择文件的窗口
随便选择一个文件
文件名就会显示在页面上,通过点击上传经过处理页面然后提交
接下来再做第二个页面 shangchuan.php
第二个页面提交的因为不是数据了,所以这里就不能用post了
可以使用files数组来取了
来看一下代码,先输出一下,看它输出的都是些什么
点击上传
出来的是数组
file数组里面能够取到的内容 tem_name 后面是文件的路径,在服务器上暂时存了个临时文件
如果常理来说只需要再做一步,把文件保存了就可以,但是做程序不能那么简单的做,得考虑各种因素,各个方面
1、控制上传文件的类型
2、控制上传文件的大小
3、防止文件名重复
修改保存的文件名 (1)用户名+时间戳+随机数+文件名 (2)流水号
使用文件夹存文件防止文件名重复 最常用的是第一种
4、保存文件
来看一下shangchuan.php 页面代码部分
<?php //var_dump($_FILES["file"]); //索引写它的name值 //判断文件上传是否出错 if($_FILES["file"]["error"]) { echo $_FILES["file"]["error"]; } else { //控制上传文件类型 if(($_FILES["file"]["type"]=="image/jpeg" || $_FILES["file"]["type"]=="image/png") && $_FILES["file"]["size"]<1024000) { //找到文件存放的位置 $filename = "./file/".date("YmdHis").$_FILES["file"]["name"]; //加 . 拼接 //转换编码格式 $filename = iconv("UTF-8","gb2312",$filename); //判断文件是否存在 if(file_exists($filename)) { echo "该文件已存在!"; } else { //保存文件 move_uploaded_file($_FILES["file"]["tmp_name"],$filename); //移动上传文件 } } else { echo "文件类型不正确"; } }
在运行前,先建个文件夹,在同一目录下
用来储存上传的图片
用第一个页面运行一下,看看能不能运行成功
点击上传
然后再去看一下那个文件夹
上传成功
注明: 如果上传的这些类型是伪造的,怎么确保保存的是上传图片,而不是随便给的一个路径
通过 就可以确保,保存的一定是上传文件
这句话是从UTF—8,转换为国标,用iconv方法就可以,如果不转换的话,有些文件名会有出现乱码的情况