Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】


Posted in jQuery onMay 29, 2020

本文实例讲述了Jquery+AJAX实现无刷新上传并重命名文件操作。分享给大家供大家参考,具体如下:

index.html

<!DOCTYPE html>
<html>
<head>
  <title>Ajax上传图片</title>
  <meta charset="utf-8">
  <script src="https://www.jq22.com/jquery/jquery-3.3.1.js"></script>
</head>
<body>
  <h1>Ajax上传图片</h1>
  <!-- 表单 -->
  <form id="form" enctype="multipart/form-data">
    <input type="file" id="fileAttach" name="file"/>
    <input type="button" onclick="upload()" value="上传"/>
  </form>

  <!-- 显示结果 -->
  <h2 id="upload-result"></h2>

  <!-- 显示图片 -->
  <div id="imgdiv"></div>

  <!-- Ajax上传 -->
  <script>
    function upload(){
      var form = new FormData(document.getElementById("form"));
      $.ajax({
        url:"upload.php",
        type:"post",
        data:form,
        cache: false,
        processData: false,
        contentType: false,
        success:function(data){
          if (data.res == "400") {
            $("#upload-result").text("上传成功");
            $("#imgdiv").html("<img src=\"upload/"+data.path+"\"/>");
          }else if (data.res == "403") {
            $("#upload-result").text("格式不对");
          }else if (data.res == "404") {
            $("#upload-result").text("上传错误");
          }
          
        },
        error:function(data){
          alert("上传失败")
        }
      })
    }
  </script>
</body>
</html>

upload.php

<?php
header("Content-type:application/json");
 
//获取原始文件名
$filename = $_FILES["file"]["name"];
 
//获取文件后缀名
$hzm = substr($filename,strpos($filename,"."));
 
//设置新文件名
$newfilename = substr(str_shuffle("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"),26,10);
 
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $filename);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 2048000)  // 小于 2000 kb
&& in_array($extension, $allowedExts))
{
  if ($_FILES["file"]["error"] > 0)
  {
    echo "{\"res\":\"404\"}";
  }
  else
  {
  // 此处可以输出文件的详细信息
  if (file_exists("upload/" . $newfilename.$hzm))
    {
      //
    }
    else
    {
      move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename.$hzm);
      echo "{\"path\":\"$newfilename$hzm\",\"res\":\"400\"}";
    }
  }
}
else
{
  echo "{\"res\":\"403\"}";
}
?>

请在当前目录建立upload文件夹用于存放上传后的图片

GiF Demo

Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】

更多关于jQuery相关内容可查看本站专题:《jquery中Ajax用法总结》、《jQuery扩展技巧总结》、《jQuery常用插件及用法总结》、《jQuery常见经典特效汇总》及《jquery选择器用法总结》

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
利用jQuery解析获取JSON数据
Apr 08 jQuery
详谈表单格式化插件jquery.serializeJSON
Jun 23 jQuery
jquery ajax异步提交表单数据的方法
Oct 27 jQuery
jQuery实现的上传图片本地预览效果简单示例
Mar 29 jQuery
基于jQuery实现无缝轮播与左右点击效果
May 13 jQuery
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
jQuery zTree树插件的使用教程
Aug 16 jQuery
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 jQuery
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
jquery实现图片无缝滚动 蒙版遮蔽效果
Jan 11 jQuery
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 jQuery
jQuery实现移动端扭蛋机抽奖
Nov 08 jQuery
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
May 29 #jQuery
Jquery高级应用Deferred对象原理及使用实例
May 28 #jQuery
JQuery插件tablesorter表格排序实现过程解析
May 28 #jQuery
jQuery实现鼠标滑动切换图片
May 27 #jQuery
jQuery弹框插件使用方法详解
May 26 #jQuery
jQuery实现的分页插件完整示例
May 26 #jQuery
jQuery 选择器用法实例分析【prev + next】
May 22 #jQuery
You might like
Apache设置虚拟WEB
2006/10/09 PHP
什么是MVC,好东西啊
2007/05/03 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
jquery无缝图片轮播组件封装
2020/11/25 jQuery
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
[01:44]Ti10举办地公布
2019/08/25 DOTA
Python实现的多线程端口扫描工具分享
2015/01/21 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
python pip如何手动安装二进制包
2020/09/30 Python
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
linux面试题参考答案(10)
2016/10/26 面试题
初一地理教学反思
2014/01/16 职场文书
入党自我评价范文
2014/02/02 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
酒会邀请函
2015/01/31 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
党员转正介绍人意见
2015/06/03 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书