直接上源代码

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上传文件相关推荐

  1. 页面无刷新ajax上传文件--模拟iframe,超简单

    前段时间在解决ajax上传文件时折腾了好一阵.直接用$.post上传文本信息肯定是没有问题的.但是$.post直接上传图片是不可行的. 后来看到网上的一些解决方案,有现成的ajax上传文件的封装的方法 ...

  2. 上传html 0字节,HTML ajax 上传文件限制文件的类型和文件大小

    html js function getFileType(filePath){ //获取文件的后缀名 var startIndex = filePath.lastIndexOf(".&quo ...

  3. ajax上传文件 获取失败,Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法...

    本篇文章给大家带来的内容是关于Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 问题 A ...

  4. php 通过ajax上传文件,php – 通过ajax上传文件

    我使用2个文件index.js,upload.php尝试通过ajax上传文件(img),如果成功附加到div uploadfile_show. 但它不起作用,几乎没有问题,下面是我的代码有什么建议吗? ...

  5. Django框架 之 Form表单和Ajax上传文件

    Django框架 之 Form表单和Ajax上传文件 浏览目录 Form表单上传文件 Ajax上传文件 伪造Ajax上传文件 Form表单上传文件 html 1 2 3 4 5 6 7 <h3& ...

  6. ajax上传 java,javaWeb中使用ajax上传文件

    javaWeb上传图片 上传文件所必要的两个jar包:commons-fileupload.jar.commons-io.jar. 核心代码: String withPath = req.getSer ...

  7. Ajax上传文件的cache、processdata、contentType属性以及FormData对象的总结

    Ajax上传文件的cache.processdata.contentType属性以及FormData对象的总结 前言:在之前的Ajax一次性上传多张图片并实现预览的博客中提到,如果要用 Ajax 上传 ...

  8. ajax上传文件报错The current request is not a multipart request的解决办法

    ajax上传文件报错The current request is not a multipart request的解决办法 主要报错语句为: The current request is not a ...

  9. ajax 上传文件实例,JavaScript使用Ajax上传文件的示例代码

    本文介绍了JavaScript使用Ajax上传文件的示例代码,分享给大家,具体如下: 实现文件的上传主要有两种方式: 使用form表单提交上传 html代码如下: 上传 此时的JavaScript代码 ...

最新文章

  1. Java基础-Date类常用方法介绍
  2. 华为王成录:把安卓最核心部分换得差不多了 手机升级鸿蒙OS 2.0水到渠成
  3. SpringBoot(十五)_springboot实现预览pdf
  4. 100个必会的python脚本-Python 经典算法100及解析(小结)
  5. Mac和 iOS 下的对称和非对称加密算法的使用
  6. SPOJ 375 树链剖分学习
  7. 计算硼原子的基态能级的java程序
  8. Oracle数据库查看用户状态
  9. 用c语言链表做一个词典,电子字典C语言链表版
  10. 计算机命令秒退,Win10专业版下ping命令闪退自动关闭的解决办法
  11. 《大数据》2015年第3期“研究”——社交网络影响力传播研究(上)
  12. 【Java】避免用户篡改查询结果的GUI显示的策略
  13. Voxengo Peakbuster for mac(音频谐波增强插件)
  14. TCPClient例子(3)基于委托和事件的TcpHelper程序
  15. dosbox中out of memory_flink教程-详解flink 1.11 中的JDBC Catalog
  16. 1计算机组成及作用是什么,如何理解计算机组成和计算机体系结构?
  17. SQL语句的增删改查(详细)
  18. w乐ndows update更新失败,黑鲨教你解决Windows系统update更新失败问题
  19. Java项目:课程在线学习与测试系统(java+SSM+redis+Bootstrap+Tomcat+mysql)
  20. FICO 发票校验时修改统驭科目

热门文章

  1. Nlog日志记录组件使用
  2. CSS3之正方体旋转
  3. Java读写Excel之HSSFWorkbook、XSSFWorkbook、Workbook
  4. weekofyear跨年问题
  5. WeChat Reader
  6. operator framework搭建operator开发环境
  7. WDM波分复用中什么是C波段、L波段?
  8. 新手如何看k线(图)
  9. 阐明量子力学到底为何物?
  10. opencv 直方图 CV::calcHist使用