Correction status:qualified
Teacher's comments:
HTML文件:demo6.html
<!-- 1.文件上传的请求类型必须是POST 2.允许的数据类型必须是:multipart/form-data 如果想在当前页面处理上传的话,action可能会有三种写法 1.最懒的方法,空:默认当前脚本 2.使用当前文件名:demo6.php 3.最酷的方法: --> <!-- <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post" enctype="multipart/form-data"> --> <form id="upload" action="demo7.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="542488"> <fieldset> <legend align="center">文件上传</legend> <p><strong>选择文件:</strong><input type="file" name="upload"></p> </fieldset> <p align="center"><button type="button" name="submit">上传</button></p> </form> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> </body> </html> <script src="../js/jquery-3.3.1.js"></script> <script> $('button:first').on('click', function(){ // alert('aaa') var upload = new FormData($("#upload")[0]); $.ajax({ url:'demo7.php', type:'POST', cache: false, dataType:'json', data:upload, // 下面三个参数要指定,如果不指定,会报一个JQuery的错误 cache: false, contentType: false, processData: false, success:function($res){ if($res.status == 1){ alert($res.message) } else{ alert($res.message) } } }) }) </script>
点击 "运行实例" 按钮查看在线实例
php文件:demo7.php
<?php // echo '<pre>' // print_r($_FILES['upload']); // $_FILES:它是一个二维数组 // $_FILES['当前上传文件的控件名称,input[name="upload"]'] // $_FILES['upload']['name']:文件原始名称 // $_FILES['upload']['type']:文件类型 // $_FILES['upload']['size']:文件大小 // $_FILES['upload']['tmp_name']:服务器上的临时文件夹 // $_FILES['upload']['error']:错误代码 if($_SERVER['REQUEST_METHOD'] == 'POST'){ // echo 100; //1.检测是否有文件被上传 if(isset($_FILES['upload'])){ //2.设置一下允许上传的类型 $allow = ['image/jpg', 'image/jpeg', 'image/png']; if(in_array(@$_FILES['upload']['type'], $allow)){ //将用户上传文件上传到指定的临时目录:move_uploaded_file() if(move_uploaded_file($_FILES['upload']['tmp_name'], "upload/{$_FILES['upload']['name']}") ){ //上传成功 echo json_encode(array('status'=>1, 'message'=>'上传成功')); exit(); } }else{ echo json_encode(array('status'=>1, 'message'=>'仅允许上传jpeg/jpg/png格式的图片')); exit(); } }else{ echo json_encode(array('status'=>1, 'message'=>'没有文件上传/未知错误')); exit(); } /*//如果上传失败 if(@$_FILES['upload']['error'] > 0){ echo '<p>错误原因是:<strong>'; switch ($_FILES['upload']['error']) { case '1': echo '文件超过php.ini中大小'; break; case '2': echo '文件超过表单设置的大小'; break; case '3': echo '文件上传不完整'; break; case '4': echo '没有文件被上传'; break; case '6': echo '没有临时文件夹'; break; case '8': echo '上传意外被终止'; break; default: echo '未知错误'; break; } // echo '</strong></p>'; // //保险起见,最好手工把临时目录下面的文件清空,系统也会在会话结束的时候被清空 // ig(file_exists($_FILES['upload']['tmp_name'])) }*/ }else{ echo json_encode(array('status'=>1, 'message'=>'上传类型错误')); exit(); } ?>
点击 "运行实例" 按钮查看在线实例