文件上传

Posted chenyijia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件上传相关的知识,希望对你有一定的参考价值。

 

 

<?php

//接受传过来的文件

$result=array();
foreach($_FILES as $key=>$value){
foreach($value as $ke=>$val){
foreach($val as $k=>$v){
$result[$k][$key][$ke]=$v;
}
}
}


foreach($result as $key=>$value){
$res=uploads(‘photo‘,$value);
$arr=explode(‘|‘,$res);
if($arr[0]==‘图片上传成功‘){
if($key==(count($result)-1)){
// include_once(‘common.php‘);
// show_msg(‘图片上传成功‘);
echo "<script> alert(‘图片上传成功‘);</script>";
}
echo $arr[1].‘<br>‘;//拿到图片的名称存到数据库里面
}else{
echo "<script>var aa=‘$arr[0]‘;
alert (aa);
window.location.href=‘form.html‘;</script>";
}
}
//把图片查出来scandir读取文档scandir
$arr=scandir(‘upload‘);

//去掉点点...
unset($arr[0]);
unset($arr[1]);
rsort($arr);

if(isset($_GET[‘src‘])){
$src=$_GET[‘src‘];
unlink($src);
echo "<script>alert(‘删除成功!‘);location.href=‘wjphp.php‘;</script>";
}

 

//上传图片函数
function uploads($name,$value,$type=array(‘jpg‘,‘png‘,‘gif‘),$size=1048576,$path=‘upload‘){

if($value){
//1、判断错误值
$num=$value[$name][‘error‘];
switch($num){
case 1:
return ‘上传的图片大小超过了php.ini中upload_max_filesize设置的值‘;
break;
case 2:
return ‘上传的图片大小超过了MAX_FILE_SIZE的值‘;
break;
case 3:
return ‘图片没有完全上传‘;
break;
case 4:
return ‘没有选择图片‘;
break;
}
//2、判断文件的类型
$pre=pathinfo($value[$name][‘name‘],PATHINFO_EXTENSION);//拿到后缀
if(!in_array($pre,$type)){
//判断后缀是否在$type数组中出现,如果没有出现就提示
return ‘你所上传的文件类型不正确‘;
}
//3、判断文件的大小
if($value[$name][‘size‘]>=$size){
return ‘你上传的文件太大了‘;
}
//4、保存图片
//先设置图片的名称
$filename=date(‘YmdHis‘,time()).mt_rand(1000,9999).mt_rand(1000,9999);
//echo $filename;die;
//die阻止后面的代码继续执行
$file=$filename.‘.‘.$pre;
//echo $file;die;
if(is_uploaded_file($value[$name][‘tmp_name‘])){
//判断是否有临时文件
move_uploaded_file($value[$name][‘tmp_name‘],$path.‘/‘.$file);
return ‘图片上传成功|‘.$file;
}else{
return ‘图片上传失败‘;
}
}else{
return ‘上传的图片不合法‘;
}
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style type="text/css">
img{
float: left;
}
</style>
<body>
<?php foreach($arr as $k=>$v){ ?>
<img id="img_id" src=‘<?php echo "upload/".$v;?>‘ alt="$k">
<?php } ?>

<script>
var img=document.getElementsByTagName(‘img‘);

for (var i=0;i<img.length;i++){
img[i].onclick=function(){
$res=window.confirm(‘你确定删除吗‘);
if($res){

//拿到当前点击的图片的src属性的值
var del_path=this.getAttribute(‘src‘);
//模拟成地址栏的参数提交
location.href=‘?src=‘+del_path;
}

}
}

</script>
</body>
</html>

//html提交文件

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>

<form method="post" action="wjphp.php" enctype="multipart/form-data">
上传文件:<input type="file" name="photo[]" multiple="multiple">
<input type="submit" value="提交">
</form>
</body>
</html>

































































































































以上是关于文件上传的主要内容,如果未能解决你的问题,请参考以下文章

什么是文件上传漏洞

vue上传文件到后台

JSP-超大文件上传-如何上传文件-大文件上传

php文件上传漏洞代码只允许上传图片

上传文件失败,具体原因:上传的文件超过大小限制,请上传小于 1024k的文件?

delphi10用布署上传文件