使用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>
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 ?>

浙公网安备 33010602011771号