PHP实现图片(文件)上传

Wesley13
• 阅读 618

这几天整理做过的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'不可变 PHP实现图片(文件)上传

  • file_exists():检查图片是否存在文件夹,存在返回ture,否则false
    -upload:是我图片上传目标文件

    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);
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
PHP导入导出EXCELl,CSV
PHP导入导出Excel,CSVHTML<formaction"{:U('Admin/Unit/importcsv')}"method"post"name"myform"id"myform"enctype"multipart/formdata"<input
Wesley13 Wesley13
2年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
2年前
Django
一:form表单标签的文件上传1:浏览器:html文件<h4form文件上传</h4<formaction"/file_put/"method"post"enctype"multipart/formdata"{%csrf_token
Stella981 Stella981
2年前
Jfinal文件上传
1\.给form添加enctype"multipart/formdata"属性,如下:<formid"form"action"/fileController/upload"method"post"enctype"multipart/formdata"<inputtype"file"name"f
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这