php如何利用ajax實現非同步上傳檔案(圖)的功能詳解

黄舟
發布: 2023-03-14 10:36:01
原創
1948 人瀏覽過

这篇文章主要为大家详细介绍了php+ajax实现异步上传文件或图片功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文为大家分享了ajax异步上传文件或图片功能的具体代码,供大家参考,具体内容如下


//html代码

<form enctype="multipart/form-data" id="upForm">
 <input type="file" name="file" ><br><br>
 <input type="button" value="提交">
</form>
<p class="picDis">
 <img src="" alt="">
</p>
登入後複製


//js代码

(&#39;:button&#39;).click(function(event) {
  //formdata储存异步上传数据
 var formData = new FormData($(&#39;form&#39;)[0]);
 formData.append(&#39;file&#39;,$(&#39;:file&#39;)[0].files[0]);
 //坑点: 无论怎么传数据,console.log(formData)都会显示为空,但其实值是存在的,f12查看Net tab可以看到数据被上传了
 $.ajax({
  url:&#39;formtest.php&#39;,
  type: &#39;POST&#39;,
  data: formData,
  //这两个设置项必填
  contentType: false,
  processData: false,
  success:function(data){
  console.log(data)
  var srcPath = data;
  console.log();
     //注意这里的路径要根据自己的储存文件的路径设置
  $(&#39;.picDis img&#39;).attr(&#39;src&#39;, &#39;..&#39;+srcPath);
  }
 })
 });
登入後複製

php:


<?php 

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

/**
* 创建文件夹函数,用于创建保存文件的文件夹
* @param str $dirPath 文件夹名称
* @return str $dirPath 文件夹名称
*/
function creaDir($dirPath){
 $curPath = dirname(__FILE__);
 $path = $curPath.&#39;\\&#39;.$dirPath;
 if (is_dir($path) || mkdir($path,0777,true)) {
  return $dirPath;
 }
}

//判断文件是否为空或者出错
if ($upFile[&#39;error&#39;]==0 && !empty($upFile)) {
 $dirpath = creaDir(&#39;upload&#39;);
 $filename = $_FILES[&#39;file&#39;][&#39;name&#39;];
 $queryPath = &#39;./&#39;.$dirpath.&#39;/&#39;.$filename;
 //move_uploaded_file将浏览器缓存file转移到服务器文件夹
 if(move_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;],$queryPath)){
  echo $queryPath;
 }
}

 ?>
登入後複製

点击上传图片并发送后, 可以看到页面上显示出图片, 查看本地文件夹可以看到文件也已储存到服务器.在客户端实现异步上传的关键在于FormData,关于这部分这里有详细介绍: FormData()

以上是php如何利用ajax實現非同步上傳檔案(圖)的功能詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板