php 图片流文件上传,PHP实现图片(文件)上传

这几天整理做过的php项目,感觉这个经常会用到,传上来共享一下咯

首先,前端界面

1、表单的首行需要加上enctype="multipart/form-data",需要上传的图片必须设置 type="file"表示选择文件

图片:

//文件最大尺寸

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

数据库连接文件

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'不可变 5d6854e7a300fb4dfc6f56fefa37e324.png

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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值