PHP实现图片(文件)上传
2019-06-27 14:58
1636 查看
这几天整理做过的php项目,感觉这个经常会用到,传上来共享一下咯
首先,前端界面
1、表单的首行需要加上enctype="multipart/form-data",需要上传的图片必须设置 type="file"表示选择文件
<form id="img_form" method="post" class="form-horizontal" role="form" enctype="multipart/form-data"> <label class="col-sm-3 control-label" for="image">图片:</label> <div class="col-sm-9 require"> <input type="hidden" name="MAX_FILE_SIZE" value="2000000">//文件最大尺寸 <input type="file" class="form-control" name="image" id="image"> </div> </div> </form>
2、为表单添加事件,我用的是ajax
因为图片在是二进制传输,所以需要用new FormData(this)获取表单非文本类的数据(注包括文本类),纯文本类数据可用$(this).serialize();
$('#form1').submit(function (e) { e.preventDefault(); var data=new FormData(this);//获取非文本类的数据 $.ajax({ url:"php/add.php",//处理页面的路径 data:data,//通过json格式将一组数据传过去 type:"post",//数据的提交和传递方式,最好用POST dataType:"json",//页面返回值的类型,共有三种:TEXT,JSON,XML可选 cache:false, contentType:false, processData:false, success:function(res){//回调函数:如果ajax调用成功,就执行这个success后面的函数,(data)当做参数返回过来 if (res.flag===1){ alert('上传成功!'); } else if(res.flag===2){ alert('网络或其他未知错误,请重试!') }else{ alert('图片格式错误,请重试!') } }, error: function () { alert("error") } }); });
3、编写php文件
connect.php
数据库连接文件
<?php $link=new PDO("mysql:host=localhost;port=3306;dbname=db","root",""); $link->query("set names utf8");
add.php
- extract($_POST):批量获取前端post方式传过来的数据,使用参数时参数名为前端传过来的初始名。
- in_array(search,array,type):搜索数组中是否存在指定的值,即元素是否存在与数组,返回true或false。
search,必需,规定要在数组搜索的值。array,必需,规定要搜索的数组。type,可选,如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。 - count():获取数组元素个数
$_FILES['image']['name']:'image'为前端图片定义的name,后面的'name'不可变
file_exists():检查图片是否存在文件夹,存在返回ture,否则false
-upload:是我图片上传目标文件
<?php extract($_POST); $date = date('Y-m-d'); $file_name = $_FILES['image']['name'];//获取缓存区图片,格式不能变 $type = array("jpg", "gif", 'png', 'bmp');//允许选择的图片类型 $ext = explode(".", $file_name);//拆分获取图片名 $ext = $ext[count($ext) - 1];//取图片的后缀名 if (in_array($ext,$type)){ do{ $new_name = get_file_name(6).'.'.$ext; $path='upload/'.$new_name;//upload为目标文件夹 }while (file_exists("../" . $path));//检查图片是否存在文件夹,存在返回ture,否则false $temp_file=$_FILES['image']['tmp_name'];//获取服务器里图片 include_once ('connect.php');//连接数据库 $result = $link->exec("INSERT INTO `news`(`title`,`author`, `content`, `src`,`time`) VALUES ('$title','$author','$content','$path','$date')"); if ($result){ move_uploaded_file($temp_file,"../" .$path);//移动临时文件到目标路径 $arr['flag']=1; $arr['detail']=[$title,$author,$content,$path]; }else{ $arr['flag']=2; } }else{ $arr['flag']=3; } function get_file_name($len)//获取一串随机数字,用于做上传到数据库中文件的名字 { $new_file_name = 'A_'; $chars = "1234567890qwertyuiopasdfghjklzxcvbnm";//随机生成图片名 for ($i = 0; $i < $len; $i++) { $new_file_name .= $chars[mt_rand(0, strlen($chars) - 1)]; } return $new_file_name; } echo json_encode($arr);
相关文章推荐
- php实现上传图片文件代码
- PHP设置图片文件上传大小的具体实现方法
- php如何实现上传图片文件,并替换
- 使用PHP实现七牛云存储图片(文件)上传
- php实现图片上传与文件上传的实现代码实例
- php实现curl请求以post方式上传图片文件
- php+ajax实现图片文件上传实例代码
- PHP -- 上传文件接口编写 及 iOS -- 端上传图片AF实现
- php实现将文件写入数据库、从数据库读取文件(防止图片上传漏洞)
- PHP使用curl请求实现post方式上传图片文件功能示例
- php实现上传图片文件代码
- 服务器基于PHP CodeIgniter,Android基于Volley实现多文件/图片上传(含服务器,web版和android客户端完整代码)
- PHP 图片文件上传实现代码
- 使用PhpMysql实现图片文件上传下载
- php+ajax实现图片文件上传功能实例
- php+ajax实现图片文件上传功能
- PHP设置图片文件上传大小的具体实现方法
- js实现图片文件上传预览 | 黄乔国PHP
- PHP实现图片文件上传[转]
- php+ajax实现异步上传文件或图片功能