博客列表 >文件上传—4月19日

文件上传—4月19日

→忆指凡尘&的博客
→忆指凡尘&的博客原创
2018年04月23日 18:48:54523浏览

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>文件上传</title>
</head>
<body>
	<form  enctype="multipart/form_data">
		<!-- <input type="hidden" name="MAX_FILE_SIZE" value="542488"> -->
		<fieldset style="width: 400px">
			<legend>文件上传</legend>
			<p>文件上传:<input type="file" name="upload" id="file"></p>
			<p><button type="sbmit" name="submit">上传</button></p>
		</fieldset>
	</form>	
</body>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
	$('button').eq(0).click(function(){

		if($('#file').val().length==0){
            $('#file').parent($('span').remove())
            $('button:first').after('<span style="color: #ff0000;">请先选择上传的文件!</span>')
        }else{
            //获取文件路径
            var files=$("#file")[0].files[0]
            //创建 formData 对象 FormData为序列化表单
            var formdata = new FormData()
            formdata.append('files',files)
            //采用 ajax 进行发送
            $.ajax({
                url:'admin/check.php',
                type:'POST',
                data:formdata,
                dataType:'JSON',
                processData:false,//用于对data参数进行序列化处理  
                contentType:false,
                success:function (status) {
                    console.log(status.msg)
                    $('#file').parent($('span').remove())
                    $('#file').after('<br><span>'+status.msg+'</span>')
                }
            })
        }
	})
</script>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php

if($_SERVER['REQUEST_METHOD']=="POST"){
    //判断提交过来的请求是否为空,不为空则有文件上传
    if(isset($_FILES['files'])){
        $img_type=['image/jpg','image/jpeg','image/png'];

        //判断上传的图片类型是否是图片数组中的类型
        if(in_array($_FILES['files']['type'], $img_type)){

            //将上传的文件重命名
            $date=date('Ymdhis');//得到当前时间
            $fileName=$_FILES['files']['name'];//得到上传文件的名字
            $name=explode('.',$fileName);//将文件名以'.'分割得到后缀名,得到一个数组
            $newPath=$date.'.'.$name[1];//
            $oldPath=$_FILES['files']['tmp_name'];//临时文件夹,即以前的路径

            //将用户文件保存到指定目录
            if(move_uploaded_file($oldPath,"upload/{$newPath}")){
                echo json_encode(['msg'=>'上传成功!新的文件名是:'.$newPath]);
            } else {
                echo json_encode(['msg'=>'上传失败']);
            }
        }else{
            echo json_encode(['msg'=>'只可以上传jpg,jpeg,png的图片']);
        }
    }else{
        echo json_encode(['msg'=>'请先上传文件']);
    }
    //上传失败的常见错误捕获
    if($_FILES['files']['error']>0){
        switch ($_FILES['files']['error']) {
            case 1:
                echo json_encode(['msg'=>'文件超过php.ini中的默认大小']);
                break;
            case 2:
                echo json_encode(['msg'=>'文件超过表单设置大小']);
                break;
            case 3:
                echo json_encode(['msg'=>'文件只有一部分上传']);
                break;
            case 4:
                echo json_encode(['msg'=>'没有文件上传']);
                break;
            case 6:
                echo json_encode(['msg'=>'没有临时文件夹']);
                break;
            case 8:
                echo json_encode(['msg'=>'上传意外终止']);
                break;
            default:
                echo json_encode(['msg'=>'未知错误']);
                break;
        }
    }

    //清空临时文件下的文件,系统也会在回话结束时清空
    if(file_exists($_FILES['files']['tmp_name'])&&is_file($_FILES['files']['tmp_name'])){
        unlink($_FILES['files']['tmp_name']);
    }
}
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

                                                                                         课程总结

1.系统变量: $_FILES是一个二维数组,一维是当前的文件上件控件的名称,就是name属性值

     二维是它的当前属性,最重要的有以下几个:

        $_FILES['file']['name']: 文件原始名称

        $_FILES['file']['type']: 文件类型

        $_FILES['file']['size']: 上传的文件大小

       $_FILES['file']['tmp_name']: 服务器上的临时文件夹

       $_FILES['file']['error']: 上传错误代码

2.处理脚本的三种语法:

(1)最严格的写法:$_SERVER['PHP_SELF']:建议实际工作中用htmlspecialchars()进行防跨域攻击处理

(2) 最死板的写法,直接写上当前文件名: demo.php

(3)最简单的写法: 空,啥也不写,默认就是提交到当前页面的php脚本处理


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议