Blogger Information
Blog 64
fans 2
comment 3
visits 75739
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
ajax+php上传文件—2018年4月20日16:04:30
清雨的博客
Original
573 people have browsed it


实例

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" >
<title>ajax+php上传文件</title>
<style type="text/css">
	.anniu{
		width: 100px;
		height: 50px;
		background-color: #1AF3DF;
		font-size: 1.1em;
		border-radius:50%;
	}
	.anniu:hover{
		background-color: #72F950;
		font-weight: bold;
	}
</style>
</head>
<body>
<h2 align="center">ajax+php上传文件</h2>

<form action="upload.php" method="POST" enctype="multipart/form-data" style="width: 30%;margin: auto;">
	<fieldset>
		<legend align="center">文件上传</legend>
		<p><strong>文件名称:</strong><input type="text" name="username"/></p>
		<p><strong>选择文件:</strong><input type="file" name="upload"></p>
	</fieldset>	
	<p align="center"><button class="anniu" type="submit" name="submit">确定上传</button></p>
</form>
</body>
</html>
<script type="text/javascript">
//加载提交事件给from设置提交事件
window.onload=function(){
var fm=document.getElementsByTagName('form')[0];
fm.onsubmit=function(evt){
//1、收集信息--普通表单信息和文件信息
var fd=new FormData(fm);//代表事件的元素节点对象
//2、ajax传递表单信息到服务器
var xhr=new XMLHttpRequest();//传递数据
xhr.onreadystatechange=function(){
//判断
if(xhr.readyState==4){
alert(xhr.responseText);//打印传输的信息
}
}
//数据传输 ,服务器端
xhr.open('POST','upload.php');
xhr.send(fd);//发送
//阻止事件流
//阻止浏览器跳转
evt.preventDefault();
}
}
</script>

运行实例 »

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

upload.php

实例

<?php
//解决页面中文提示乱码情况
header("Content-type:text/html;charset=UTF-8");

//判断附件是否有问题
//附件的存储位置和附件的名字--存储位置-->uploads文件下以用户名命名的文件夹
$path = 'uploads/' . $_POST['username'] . '/';
//最大文件大小20M
$maxSize = 20971520;
//允许上传的文件类型
$allowExt = array('jpeg', 'jpg','png', 'gif');
//如果没有文件夹,自己创建一个新的文件夹
if ($_FILES['upload']['error'] == 0) {
if (!file_exists($path)) {
//解决上传文件中文文件时出现报错情况
$path = iconv('utf-8','gb2312',$path);
mkdir($path, 0777, TRUE);
chmod($path, 0777);
}
if ($_FILES['upload']['size'] > $maxSize) {
exit('上传文件大于20M限制,请检查!');
}
$ext = pathinfo($_FILES['upload']['name'], PATHINFO_EXTENSION);
if (!in_array($ext, $allowExt)) {
exit('只允许图片文件请检查!');
}
//判断文件是否通过HTTP POST方式上传
if (!is_uploaded_file($_FILES['upload']['tmp_name'])) {
exit('文件不是通过HTTP POST方式上传,请检查!');
}
}
//保证文件原名存储
$name = $_FILES['upload']['name'];

//存储真实名
$truename = $path . $name;

//移动临时位置到真实位置move_uploaded_file
if (move_uploaded_file($_FILES['upload']['tmp_name'],$truename)) {
echo $_POST['username']."!您的文件上传成功";
} else {
//匹配错误信息
switch ($_FILES['upload']['error']) {
case 1 :
echo '上传文件超出了php.ini配置文件中upload_maxfilesize选项的值';
break;
case 2 :
echo '文件超出了表单MAX_FILE_SIZE限制的大小';
break;
case 3 :
echo '文件部分被上传';
break;
case 4 :
echo '没有选择上传的文件';
break;
case 6 :
echo '没有找到临时目录';
break;
case 7 :
echo '磁盘已满,写入失败';
break;
case 8 :
echo '系统未知错误!';
break;
}

}
?>

运行实例 »

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

1.png

2.png

总结,越往后实用内容越多,感觉压力越大,刚开始的内容很快就可以思考明白如何来做,到了后来需要进一步的测试等,下来还需要多多的看下视频以及相关的额材料


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post