php+ajax上传文件
直接上源代码
html页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" >
<meta name="description" content=""/>
<meta name="keywords" content=""/>
<title>ajax上传文件</title>
<script type="text/javascript">
//加载提交事件给from设置提交事件
window.οnlοad=function(){
//编写出错----注意getElementsByTagName和getElementsByName的区别
//报错:Uncaught TypeError:不确定性无法设置属性“OnSubmit”在window.onload
var fm=document.getElementsByTagName('form')[0];
fm.οnsubmit=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','./05.php');//数据传输格式 ,服务器端
xhr.send(fd);//发送
//阻止事件流
evt.preventDefault();//阻止浏览器跳转
}
}
</script>
</head>
<body>
<h2>ajax无刷新上传文件</h2>
<form action="./05.php">
<p>姓名: <input type="text" name="username"/></p>
<p>密码: <input type="password" name="userpwd" /></p>
<p>邮箱: <input type="text" name="useremail" /></p>
<p>附件: <input type="file" name="userpic" /></p>
<input type="submit" value="提交"/>
</form>
</body>
</html>
php页面
<?php
//解决页面中文提示乱码情况
header("Content-type:text/html;charset=UTF-8");
//测试--打印出收集传输的信息
//echo "post:";
//print_r($_POST);
//echo "FILES:";
//print_r($_FILES);
//判断附件是否有问题
//附件的存储位置和附件的名字--存储位置-->uploads文件下以用户名命名的文件夹
$path = 'uploads/' . $_POST['username'] . '/';
//最大文件大小20M
$maxSize = 20971520;
//允许上传的文件类型
$allowExt = array('jpeg', 'jpg', 'JPG', 'png', 'gif', 'wbmp', 'doc', 'docx', 'zip', 'rar', 'pdf');
//如果没有文件夹,系统自己创建一个新的文件夹
if ($_FILES['userpic']['error'] == 0) {
if (!file_exists($path)) {
mkdir($path, 0777, TRUE);
chmod($path, 0777);
}
if ($_FILES['userpic']['size'] > $maxSize) {
exit('上传文件大于20M限制,请检查!');
}
$ext = pathinfo($_FILES['userpic']['name'], PATHINFO_EXTENSION);
if (!in_array($ext, $allowExt)) {
exit('只允许图片文件,word文件,压缩文件,pdf文件,请检查!');
}
//判断文件是否通过HTTP POST方式上传
if (!is_uploaded_file($_FILES['userpic']['tmp_name'])) {
exit('文件不是通过HTTP POST方式上传,请检查!');
}
}
//保证文件原名存储
$name = $_FILES['userpic']['name'];
//解决上传文件中文文件时出现报错情况
$name = iconv('utf-8','gb2312',$_FILES['userpic']['name']);
//存储真实名
$truename = $path . $name;
//移动临时位置到真实位置move_uploaded_file
if (move_uploaded_file($_FILES['userpic']['tmp_name'],$truename)) {
echo "上传成功";
} else {
//匹配错误信息
switch ($_FILES['userpic']['error']) {
case 1 :
echo '上传文件超出了php配置文件中upload_maxfilesize选项的值';
break;
case 2 :
echo '文件超出了表单MAX_FILE_SIZE限制的大小';
break;
case 3 :
echo '文件部分被上传';
break;
case 4 :
echo '没有选择上传的文件';
break;
case 6 :
echo '没有找到临时目录';
break;
case 7 :
case 8 :
echo '系统错误!';
break;
}
//echo "上传失败";
}
?>
本人已测试成功,请参考。
php+ajax上传文件相关推荐
- 页面无刷新ajax上传文件--模拟iframe,超简单
前段时间在解决ajax上传文件时折腾了好一阵.直接用$.post上传文本信息肯定是没有问题的.但是$.post直接上传图片是不可行的. 后来看到网上的一些解决方案,有现成的ajax上传文件的封装的方法 ...
- 上传html 0字节,HTML ajax 上传文件限制文件的类型和文件大小
html js function getFileType(filePath){ //获取文件的后缀名 var startIndex = filePath.lastIndexOf(".&quo ...
- ajax上传文件 获取失败,Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法...
本篇文章给大家带来的内容是关于Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 问题 A ...
- php 通过ajax上传文件,php – 通过ajax上传文件
我使用2个文件index.js,upload.php尝试通过ajax上传文件(img),如果成功附加到div uploadfile_show. 但它不起作用,几乎没有问题,下面是我的代码有什么建议吗? ...
- Django框架 之 Form表单和Ajax上传文件
Django框架 之 Form表单和Ajax上传文件 浏览目录 Form表单上传文件 Ajax上传文件 伪造Ajax上传文件 Form表单上传文件 html 1 2 3 4 5 6 7 <h3& ...
- ajax上传 java,javaWeb中使用ajax上传文件
javaWeb上传图片 上传文件所必要的两个jar包:commons-fileupload.jar.commons-io.jar. 核心代码: String withPath = req.getSer ...
- Ajax上传文件的cache、processdata、contentType属性以及FormData对象的总结
Ajax上传文件的cache.processdata.contentType属性以及FormData对象的总结 前言:在之前的Ajax一次性上传多张图片并实现预览的博客中提到,如果要用 Ajax 上传 ...
- ajax上传文件报错The current request is not a multipart request的解决办法
ajax上传文件报错The current request is not a multipart request的解决办法 主要报错语句为: The current request is not a ...
- ajax 上传文件实例,JavaScript使用Ajax上传文件的示例代码
本文介绍了JavaScript使用Ajax上传文件的示例代码,分享给大家,具体如下: 实现文件的上传主要有两种方式: 使用form表单提交上传 html代码如下: 上传 此时的JavaScript代码 ...
最新文章
- Java基础-Date类常用方法介绍
- 华为王成录:把安卓最核心部分换得差不多了 手机升级鸿蒙OS 2.0水到渠成
- SpringBoot(十五)_springboot实现预览pdf
- 100个必会的python脚本-Python 经典算法100及解析(小结)
- Mac和 iOS 下的对称和非对称加密算法的使用
- SPOJ 375 树链剖分学习
- 计算硼原子的基态能级的java程序
- Oracle数据库查看用户状态
- 用c语言链表做一个词典,电子字典C语言链表版
- 计算机命令秒退,Win10专业版下ping命令闪退自动关闭的解决办法
- 《大数据》2015年第3期“研究”——社交网络影响力传播研究(上)
- 【Java】避免用户篡改查询结果的GUI显示的策略
- Voxengo Peakbuster for mac(音频谐波增强插件)
- TCPClient例子(3)基于委托和事件的TcpHelper程序
- dosbox中out of memory_flink教程-详解flink 1.11 中的JDBC Catalog
- 1计算机组成及作用是什么,如何理解计算机组成和计算机体系结构?
- SQL语句的增删改查(详细)
- w乐ndows update更新失败,黑鲨教你解决Windows系统update更新失败问题
- Java项目:课程在线学习与测试系统(java+SSM+redis+Bootstrap+Tomcat+mysql)
- FICO 发票校验时修改统驭科目