通过FormData对象可以组装一组用 XMLHttpRequest发送请求的键/值对。它可以更灵活方便的发送表单数据,因为可以独立于表单使用。如果你把表单的编码类型设置为multipart/form-data ,则通过FormData传输的数据格式和表单通过submit() 方法传输的数据格式相同
前端文件-Jquery版本:
<form id="form" enctype="multipart/form-data" method="post"> <input type="text" name="desc" placeholder="文件名称"/><br/> <input type="file" name="file" placeholder="文件"/> <input type="button" id="submit" value="文件上传"/> </form> <script> $('#submit').click(function () { //Jquery对象转换为dom对象 var $form = $('#form'); var domForm = $form['0']; //构建formData对象 var formData = new FormData(domForm); formData.append('diycontent','我是自定义数据'); //异步上传文件 $.ajax({ url : 'file.php', type : 'POST', data : formData, // 告诉jQuery不要去处理发送的数据 processData : false, // 告诉jQuery不要去设置Content-Type请求头, jquery 会自动设置为multipart/form-data contentType : false, beforeSend:function(){ console.log('开始上传咯'); }, success : function(response) { console.log(response) }, error : function(response) { console.log(response) } }); }); </script>
前端文件-原生Javacript版本:
<form enctype="multipart/form-data" method="post" onsubmit="return upload()"> <input type="text" name="desc" placeholder="文件名称" /><br /> <input type="file" name="file" placeholder="文件" /> <input type="submit" value="文件上传" /> </form> <script type="text/javascript"> var upload=function(){ //获取表单对象 form=document.forms[0]; //构建formData对象 formdata=new FormData(form); formdata.append('diycontent','我是自定义数据'); //Ajax异步上传 var httper=new XMLHttpRequest(); httper.open('POST','file.php'); httper.onload=function(oEvent){ if(httper.status==200){ console.log('success'); console.log(httper.responseText); } else{ console.log('error'); } } httper.send(formdata); return false; } </script>
后端文件-PHP版本:
<?php //文件上传 if(move_uploaded_file($_FILES['file']['tmp_name'], $_FILES["file"]["name"])){ //记录日志 $str='文件名:'.$_FILES['file']['tmp_name'].'--文件介绍:'.$_POST['desc'].'--Formdata追加的字段值:'.$_POST['diycontent']; file_put_contents('log/'.time().'.txt',$str); //让前端控制台输出看 echo $str; }
附件下载:
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> </head> <body>...
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> ...
代码1:<!--代码开始--> <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script> <script>...
二期项目中生成的简历二维码是使用canvs生成的,微信浏览器中不能识别二维码,只能扫码。懒的换phpqrcode,于是转canvs。//设置一个url var url = "{yun:}$config.sy_weburl{/yun}/mingli/index....
工厂模式虽然解决了创建多个对象的问题,但是并没有解决识别对象从属的问题.因为都属于object.因此出现了构造函数//构造函数名称首字母大写是规范 function Box(name,age){ this.name=name; this.age=age; this.run=funct...