Heim  >  Artikel  >  Backend-Entwicklung  >  Detailliertes Beispiel für die Ajax-Implementierung des Hochladens von Dateien ohne Aktualisierung

Detailliertes Beispiel für die Ajax-Implementierung des Hochladens von Dateien ohne Aktualisierung

小云云
小云云Original
2017-12-19 13:21:141619Durchsuche

Dieser Artikel stellt hauptsächlich die Funktion von Ajax zum Hochladen von Dateien ohne Aktualisierung vor. Ich hoffe, dass er jedem helfen kann.

Der detaillierte Code lautet wie folgt


<!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>

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;
}
?>

Verwandte Empfehlungen:

JavaScript-Bildvorschaufunktion für einen aktualisierungsfreien Upload

AJAX zur Implementierung einer aktualisierungsfreien Erkennung mit Benutzername_AJAX

So implementieren Sie die AJAX-Anmeldung ohne Aktualisierungsfunktion

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel für die Ajax-Implementierung des Hochladens von Dateien ohne Aktualisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn