使用ajax或XMLHttpRequest,通过formData的方式 上传文件

jq的ajax方式

1 html表单,设置id

<form id= "editForm"> 
<p >用户名: <input type="text" name="user" value= ""/></p >    <p >用户密码: <input type="password" name="pwd" value= ""/></p >    <p >上传的文件: <input type="file" name="file"/></ p> <input id="btn-update" type="button" value="修改" >

</form>

2  js代码

 1 <script>
 2    
 3       $('#btn-update').on("click", function() {
 4         // 需要在收集前, 设置 id
 5         // 收集表单数据, 用于表单提交 (文件和基本表单数据  使用 formData 收集)
 6         var formData = new FormData( $('#editForm')[0]);
 7         // 结合着jquery ajax 发送 formData
 8         $.ajax({
 9           type: "post",
10           url: "./posts/postsUpdate.php", 
11           data: formData,
12           cache: false, //设置false将不会从浏览器缓存中加载请求信息。
13           contentType: false, // 不进行设置请求头 (formData不需要设置请求头, 浏览器会自动检测设置)
14           processData: false, // 不进行编码 (true 会将对象编码成字符串)
15           success: function( info ) {//成功之后的回调
16             console.log(info)
17           }
18         })
19       });
20 
21   </script>

 

3 php代码

1 <?php
2    echo '<pre>';
3     print_r( $_POST );
4    echo '</pre>';
5 
6       echo '<pre>';
7     print_r( $_FILES);
8    echo '</pre>';
9 ?>

 

XMLHttpRequest方式

1 HTML代码

              <input id="avatar" type="file">
              <img src="/static/assets/img/default.png">
              <input type="hidden" name="avatar">

2 js代码

 1 <script>
 2    
 3       $('#btn-update').on("click", function() {
 4         // 需要在收集前, 设置 id
 5         // 收集表单数据, 用于表单提交 (文件和基本表单数据  使用 formData 收集)
 6        var formdata=new FormData( $('#editForm')[0]);
 7         // 结合着jquery ajax 发送 formData
 8         $.ajax({
 9           type: "post",
10           url: "./posts/postsUpdate.php", 
11           data: formData,
12           cache: false, //设置false将不会从浏览器缓存中加载请求信息。
13           contentType: false, // 不进行设置请求头 (formData不需要设置请求头, 浏览器会自动检测设置)
14           processData: false, // 不进行编码 (true 会将对象编码成字符串)
15           success: function( info ) {//成功之后的回调
16             console.log(info)
17           }
18         })
19       });
20 
21   </script>
View Code

3 php代码

 1 <?php  
 2 
 3 // var_dump($_FILES['avatar']);
 4 // 
 5 // 接收文件
 6 // 保存文件
 7 // 返回这个文件访问的 url
 8 
 9 if(empty($_FILES['avatar'])){
10 
11     exit('必须上传文件');
12 }
13 
14 $avatar=$_FILES['avatar'];
15 
16 
17 if($avatar['error']!==UPLOAD_ERR_OK){
18     exit('上传失败');
19 }
20 //移动文件到网站范围之内 按年归档必须创建年份文件夹 makedir
21 $ext=pathinfo($avatar['name'],PATHINFO_EXTENSION);
22 
23 $target='../../static/uploads/img-'.uniqid().'.'.$ext;
24 
25 if(!move_uploaded_file($avatar['tmp_name'], $target)){
26 
27     exit('上传失败');
28 }
29 //上传成功
30     echo substr($target,5);
31 ?>
View Code

 

posted @ 2019-01-16 17:02  xx_sprog  阅读(697)  评论(0)    收藏  举报