批改状态:合格
老师批语:
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();
}
?>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号