前台代码(注意,不需要用到form标签):

a. html部分:

b. js部分:

c. 完整代码:

function loadDoc(file,data,async=true){

if(window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}else{ // code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

if(async === true){

xmlhttp.onreadystatechange = function(){

if(xmlhttp.readyState < 4){

// 加载中

}else if (xmlhttp.readyState == 4 && xmlhttp.status == 200){

// 成功

xmlDoc=xmlhttp.responseText;

return xmlDoc

}else{

// 失败

xmlhttp.abort()

return

}

}

}

xmlhttp.open("POST",file,async);

xmlhttp.send(data);

if(async === false){

xmlDoc=xmlhttp.responseText;

return xmlDoc

}

}

function getEle(id){

var ele = document.getElementById(id)

return ele

}

function sendFile() {

var lee_file = getEle('lee_file');

var lee_text = getEle('lee_text');

var form_data = new FormData();

for (var i in lee_file.files) {

form_data.append('pics[]', lee_file.files[i]);

}

form_data.append('text', lee_text.value);

loadDoc('test.php',form_data)

}

var lee_button = getEle('lee_button');

lee_button.onclick = function(){

sendFile()

}

php获取(用 $_FILE 获取):

完整代码:

header('Access-Control-Allow-Origin: *');

var_dump($_POST);

var_dump($_FILES);

二、FileReader+FormData+base64

前台代码:

a. html代码:

b. js代码:

c. 完整代码:

Document

function loadDoc(file,data,async=true){

if(window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}else{ // code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

if(async === true){

xmlhttp.onreadystatechange = function(){

if(xmlhttp.readyState < 4){

// 加载中

}else if (xmlhttp.readyState == 4 && xmlhttp.status == 200){

// 成功

xmlDoc=xmlhttp.responseText;

return xmlDoc

}else{

// 失败

xmlhttp.abort()

return

}

}

}

xmlhttp.open("POST",file,async);

xmlhttp.send(data);

if(async === false){

xmlDoc=xmlhttp.responseText;

return xmlDoc

}

}

function getEle(id){

var ele = document.getElementById(id)

return ele

}

lee_button = getEle('lee_button')

function sendFile() {

var lee_file = getEle('lee_file').files;

var lee_text = getEle('lee_text');

for (var i = 0; i < lee_file.length; i++) {

file = lee_file[i];

var form_data = new FormData();

var reader = new FileReader();

reader.readAsDataURL(file);

reader.onloadend = function() { // onload代表文件读取成功

getEle('lee_img').setAttribute('src',reader.result);

form_data.append('pic', reader.result);

loadDoc('test.php',form_data)

}

}

}

lee_button.onclick = function() {

sendFile();

}

php代码(用 $_POST 获取):

a. 允许跨域:

b. 将前台post过来的数据保存为临时文件:

c. 获取文件真实后缀函数:

d. 将临时文件保存为带真实后缀的文件:

e. 完整代码:

header('Access-Control-Allow-Origin:*');

/*

* 将流文件保存为临时文件

* @param stream base64输入流

* @param tmpname 临时文件路径

*/

function uploadBase64($stream) {

if (empty($stream)) return false;

if (preg_match('/^(data:(\s)?(image|img)\/(\w+);base64,)/', $stream, $str)) {

$suffix = "tmp";

$tmpname = rand(1000, 9999) . ".{$suffix}";

if (file_put_contents($tmpname, base64_decode(str_replace($str[1], '', $stream)))) {

return $tmpname;

} else {

return false;

}

} else {

return false;

}

}

/*

获取图片真实后缀

@param filename 文件名

@param suffix 文件真实后缀(.jpg .png .gif)

*/

function getSuffix($fileName) {

$file = fopen($fileName, "rb");

$bin = fread($file, 2); // 只读2字节

fclose($file);

$strInfo = @unpack("C2chars", $bin);

$typeCode = intval($strInfo['chars1'] . $strInfo['chars2']);

$suffix = "unknow";

if($typeCode == 255216){

$suffix = "jpg";

}elseif($typeCode == 7173){

$suffix = "gif";

}elseif($typeCode == 13780){

$suffix = "png";

}elseif($typeCode == 6677){

$suffix = "bmp";

}elseif($typeCode == 7798){

$suffix = "exe";

}elseif($typeCode == 7784){

$suffix = "midi";

}elseif($typeCode == 8297){

$suffix = "rar";

}elseif($typeCode == 7368){

$suffix = "mp3";

}elseif($typeCode == 0){

$suffix = "mp4";

}elseif($typeCode == 8273){

$suffix = "wav";

}

return $suffix;

}

php处理form多文件上传,ajax利用FormData、FileReader实现多文件上传php获取相关推荐

  1. php通过ajax下载文件,PHP使用ajax的post方式下载excel文件简单示例

    本文实例讲述了PHP使用ajax的post方式下载excel文件.分享给大家供大家参考,具体如下: 项目需求,前端发起ajax请求,后端生成excel并下载,同时需要在header头中,带上token ...

  2. ajax如何请求json文件,简单的ajax请求加载外部json文件

    我在学习ajax ....我试图从json文件发出一个基本请求,它与我的index.html位于同一个文件夹中,但由于某种原因它说未定义:(我可以看到错误是可变的人,但我不能赶上为什么它未定义.... ...

  3. jquery的$.ajax()利用FormData数据类型与php后台交互

    可能孤陋寡闻,现在才知道MDN的存在:https://developer.mozilla.org/zh-CN/ 的MDN全名容易理解他是什么意思:MDN Web Docs 好了,自行学习,上一篇讲了j ...

  4. ajax利用FormData、FileReader实现多文件上传php获取

    一.FormData方式 前台代码(注意,不需要用到form标签): a. html部分: b. js部分: c. 完整代码: <!DOCTYPE html> <html lang= ...

  5. (21)【后端黑白名单绕过】【WEB 漏洞利用/原理】不懂原理都是没灵魂的方法躯壳?文件上传漏洞利用过程

    目录 后端黑名单绕过 特殊可解析后缀 原理:就是加上数字等,但是可以被当做原来的类型进行执行 利用过程: .htaccess解析 原理:上传.htaccess文件到指定的目录,重写当前目录下的解析规则 ...

  6. putty怎么进入文件夹_如何利用putty工具上传文件 - 卡饭网

    图解使用FTP工具上传文件以FlashFXP为例 图解使用FTP工具上传文件以FlashFXP为例 现以FlashFXP为例,图解使用FTP工具上传文件. 1: 运行 LeapFTP,点击1处(站点- ...

  7. php h5视频录制上传,基于koa的h5视频录制异步上传

    # 需求 1. h5 录制视频, 2. 异步上传到 node 服务器端 3. 文件保存在服务器端. # 技术选型 ## 前端 - jquery ## 后端 - koa # 技术坑点 ## h5 录制视 ...

  8. 西门子触摸屏脚本程序_西门子触摸屏利用VBScript脚本创建csv文件

    功能描述:利用VBScript脚本创建csv/txt文件 有时需要将PLC或运动控制器Simotion中的数据写到SD卡或U盘上.一种实现方法是,如果使用的是精致面板(comfort panel),可 ...

  9. vba移动文件_利用NAME语句,给文件重命名

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十七个专题"文件及文件夹信息的获取及操作"的第一节"判断文件及文件夹是否存在",这个专题 ...

最新文章

  1. YOLO v4它来了:接棒者出现,速度效果双提升
  2. Python 之 Matplotlib (一)基本用法
  3. mysqldump备份单表数据
  4. pytorch笔记:09)Attention机制
  5. java script jquery_Java Script 学习笔记 -- jQuery
  6. 使用Apache来构建URL缩短服务
  7. mysql打包备份数据到_thinkPHP使用pclzip打包备份mysql数据库的方法
  8. 数据范围BZOJ 3209(花神的数论题-数位统计+1,被数据范围坑了)
  9. VIP到131970年过期就离谱~
  10. [js] 写一个方法,当给定数字位数不足8位时,则在左边补充0以补足8位数的方法
  11. 16进制转double dotnet_终于把计算机进制弄明白了!
  12. iphone se卡贴教程
  13. java解析json list
  14. Python—WebSocket爬虫实战
  15. 云服务器ubuntu建网站,云服务器ubuntu建网站
  16. 杰奇 v1.7去限制版橙色模板小说源码
  17. HBM(高带宽内存)、GDDR SDRAM(图形双倍速率同步动态随机存储器)
  18. 奶粉的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. Python2.6-原理之类和oop(下)
  20. 4.12leetcode468. 验证IP地址

热门文章

  1. 强名称程序集(strong name assembly)——为程序集赋予强名称
  2. Asp.net中页面传值几种方式
  3. Console-算法[for]-国王与老人的六十四格
  4. 面 试 细 节 一 点 通
  5. Single Image Haze Removal(图像去雾)-CVPR’09 Best Paper
  6. 每天一个小算法(Shell Sort1)
  7. linux查找命令、find、grep总结
  8. 转】未指定 INSTANCESHAREDWOWDIR 命令行值。如果指定INSTANCESHAREDDIR 值,则必须指定该值 ....
  9. 关于ORACLE 语句中,IN 超过1000个的解决方法
  10. va_list/va_start/va_end的使用