Detailed example of ajax implementation of uploading files without refreshing

小云云
Release: 2023-03-18 06:02:01
Original
1672 people have browsed it

This article mainly introduces the function of ajax to upload files without refreshing in detail. It has certain reference value. Interested friends can refer to it. I hope it can help everyone.

The detailed code is as follows


<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ajax无刷新上传文件</title>
<script>
window.onload = function(){
  var oBtn = document.getElementById(&#39;btn&#39;);
  var oMyFile = document.getElementById(&#39;myFile&#39;);

  oBtn.onclick = function() {
    //alert(oMyFile.value); //获取到的是file控件的value值,这个内容是显示给你看的文字,不是我们选择的文件

    //oMyFile.files file控件中选择的文件列表对象
    //alert(oMyFile.files);

    //我们是要通过ajax把oMyFile.files[0]数据发送给后端

    /*
    for (var attr in oMyFile.files[0]) {
      console.log( attr + &#39; : &#39; + oMyFile.files[0][attr] );
    }
    */

    //利用ajax发送必须要有一个ajax对象
    var xhr = new XMLHttpRequest();

    //监听上传事件
    xhr.onload = function(){
      //alert(1);
      //alert(this.responseText);//后端返回的数据
      var d = JSON.parse(this.responseText);

      alert(d.msg + &#39; : &#39; + d.url); //显示上传成功 并且显示文件路径
    }

    xhr.open(&#39;post&#39;,&#39;post_file.php&#39;,true); //open打开的方式不能使用get,上传文件的地址,使用异步上传
    //在使用post发送的时候必须要带一些请求头信息
    xhr.setRequestHeader(&#39;X-Request-With&#39;, &#39;XMLHttpRequest&#39;);
    //send要发送数据 
    //将要上传的数据转换成二进制数据
    //那么必须知道后端接收当前文件的名称是什么 然后后面带上当前文件的数据

    var oFormData = new FormData(); //通过FormData来构建提交数据
    oFormData.append(&#39;file&#39;,oMyFile.files[0]);

    xhr.send(oFormData);
  }
}
</script>
</head>
<body>
  <input type="file" id="myFile" /><input type="button" id="btn" value="上传" />
</body>
</html>
Copy after login

Backend php code post_file.php


##

<?php
header(&#39;Content-type:text/html; charset="utf-8"&#39;);
$upload_dir = &#39;uploads/&#39;;

if(strtolower($_SERVER[&#39;REQUEST_METHOD&#39;]) != &#39;post&#39;){
  exit_status(array(&#39;code&#39;=>1,&#39;msg&#39;=>&#39;错误提交方式&#39;));
}

if(array_key_exists(&#39;file&#39;,$_FILES) && $_FILES[&#39;file&#39;][&#39;error&#39;] == 0 ){

  $pic = $_FILES[&#39;file&#39;];

  if(move_uploaded_file($pic[&#39;tmp_name&#39;], $upload_dir.$pic[&#39;name&#39;])){
    exit_status(array(&#39;code&#39;=>0,&#39;msg&#39;=>&#39;上传成功&#39;,&#39;url&#39;=>$upload_dir.$pic[&#39;name&#39;]));
  }
}
echo $_FILES[&#39;file&#39;][&#39;error&#39;];
exit_status(array(&#39;code&#39;=>1,&#39;msg&#39;=>&#39;出现了一些错误&#39;));

function exit_status($str){
  echo json_encode($str);
  exit;
}
?>
Copy after login
Related recommendations :


JavaScript image preview function to achieve non-refresh upload

AJAX to achieve non-refresh detection user name_AJAX related

How AJAX implements the no-refresh login function

The above is the detailed content of Detailed example of ajax implementation of uploading files without refreshing. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template