无刷新上传图片,ajax 和 iframe

iframe 上传

upload.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>

<iframe id="upload_target" name="upload_target" src="upload.php" style="width:0;heigth:0;overflow:hidden;border:0;position: absolute; left:-500px;"></iframe>
<img id="tag_img" src="http://avatar.csdn.net/C/2/1/1_shenlingsuifeng.jpg" />
<form enctype="multipart/form-data" action="upload.php" method="post" target="upload_target">
    <input type="file" id="fileipt" name="userfile" class="file" value=""  />
    <input type="submit" name="uploadimg" value="上传" id="submit" hidden />
</form>

<script type=‘text/javascript‘>
    var lastFileName;
   $("#fileipt").change(function() {
       var fileName = $(this).val();
       var pos = fileName.lastIndexOf("\\");
       fileName = fileName.substr(pos+1, fileName.length);  // 截取出文件名 因为会带路径
       lastFileName = fileName;
       $("#submit").click();
   });

    function stopSend($url) {
        $("#tag_img").attr("src",$url);
    }

</script>

</body>
</html>

upload.php

<?php
/**
 * Created by PhpStorm.
 * User: chenxiaolong
 * Date: 7/21/17
 * Time: 10:24
 */
//var_dump($_FILES);
$file=$_FILES[‘userfile‘];
if($file[‘size‘] != 0) {
    $name=rand(0,500000).dechex(rand(0,10000)).".jpg";
    move_uploaded_file($file[‘tmp_name‘],$name);
    if($name) {
        echo "<script>parent.stopSend(‘$name‘)</script>";
    }
}

ajax 无刷新上传图片

<button id="J_headimg" style="font-size: 12px;margin-left: 10px;width: 70px;height: 30px;background: #10AD5A;color: #fff;">修改头像</button>
<input type="file" name="pic" id="pic" hidden accept="image/*" />
<input type="text" id="headimg" name="headimg" hidden>

<script>
  $("#J_headimg").click(function() {
    $("#pic").click();
    return false;
  });
  $("#pic").change(function() {
    var $that = $(this);
    var imgPath = $(this).val();
    if (imgPath == "") {
      alert("请选择上传图片!");
      return;
    }
    //判断上传文件的后缀名
    var strExtension = imgPath.substr(imgPath.lastIndexOf(‘.‘) + 1);
    if (strExtension != ‘jpg‘ && strExtension != ‘gif‘
            && strExtension != ‘png‘ && strExtension != ‘bmp‘ && strExtension != ‘jpeg‘) {
      alert("请选择图片文件");
      return;
    }
    var formData = new FormData();
    formData.append(‘file‘, $that[0].files[0]);// php 用$_FILES[‘file‘]接收
    console.log($that[0].files[0]);
    $.ajax({
      type: "POST",
      url: "__URL__/uploadimg",
      data: formData,
      cache: false,
      processData: false,// 需要加这两个参数
      contentType: false,
      success: function(data) {
        var obj = JSON.parse(data);
        if(obj.status == 0) {
          $("#preimg").attr("src","Public/Upload/" + obj.data);
          $("#headimg").val(obj.data);
        } else {
          alert(obj.data);
        }
      },
      error: function(XMLHttpRequest, textStatus, errorThrown) {
        alert("上传失败,请检查网络后重试");
      }
    });
  });

</script>

对应uploadimg方法

public function uploadimg() {
   $file = $_FILES[‘file‘];
   $arr = array(‘jpg‘=>‘image/jpeg‘,‘png‘=>‘image/png‘,‘gif‘=>‘image/gif‘,‘bmp‘=>‘image/bmp‘);
   if($ext = array_search($file[‘type‘],$arr)) {
      $rand = uniqid();
      $filename = "Public/Upload/avatar/{$rand}.{$ext}";
   } else {
      exit(json_encode(array(‘status‘=>2,‘data‘=>‘只支持图片上传‘)));
   }
   $r = move_uploaded_file($file[‘tmp_name‘],$filename);
   if($r) {
      exit(json_encode(array(‘status‘=>0,‘data‘=>"avatar/$rand.$ext")));
   } else {
      exit(json_encode(array(‘status‘=>1,‘data‘=>‘上传失败‘)));
   }
}
时间: 2024-08-06 01:02:04

无刷新上传图片,ajax 和 iframe的相关文章

(iframe实现)无刷新上传图片

Index.aspx 页面 <html> <head> <title>iframe实现无刷新上传图片</title> </head> <body> <input id="photo" name="photo" type="text" style="display: none" /> <iframe id="upfile1&quo

javascript 无刷新上传图片之原理

刚开始我认为可以像ajax 那样获取到数据然后通过ajax 发送请求,后来发现浏览器为了客户端的安全默认并没有给javascript 这个权限.这个方法当然是行不同了.我看了好像开源的上传图片原理,当然大部分是flash.但是为了方便使用js的也不少. 原理都是使用iframe 上传,在from标签里面有个属性 和a 标签一样 target,target标示这个表单的数据提交的目的地.网页特效代码target里面写iframe的name ,这样表单的数据就提交到了这个 iframe里面.根据这个

MVC无刷新上传图片并显示

@{ ViewBag.Title = "Home Page"; } <script src="../../Scripts/swfobject.js" type="text/javascript"></script> <script src="../../Scripts/jquery.uploadify.v2.1.4.js" type="text/javascript">&

学习aiax(javascript)--页面无刷新用ajax检查用户名是否已注册(POST方式)

1.jsp代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"

学习aiax(javascript)--页面无刷新更新ajax更新时间

1.JSP代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"

JAVA servlet无刷新上传图片文件并裁剪demo代码(Jcrop)

原文:JAVA servlet无刷新上传图片文件并裁剪demo代码(Jcrop) 源代码下载地址:http://www.zuidaima.com/share/1550463770102784.htm sevlet写的demo,可直接运行.   

使用SWFUpload组件无刷新上传图片

使用SWFUpload组件无刷新上传图片 在做项目时,需要用到一个图片的无刷新上传,之前听说过SWFUpload,于是想要通过SWFUpload来进行图片的无刷新上传,由于我的项目属于是ASP.NET项目,所以本文着重讲解ASP.NET 的使用,个人感觉示例基本给的很清晰,参考文档进行开发,并非难事 0.     首先下载swfUpload 包,在下载的包中有samples文件夹,samples下有demos文件夹,打开demos文件夹可看到如下图所示结构 我们待会会用到的包括,swfuploa

Ajax 无刷新上传图片

如果用ajax直接传图片后台不好接受,所以最终还是要通过ajax来实现,原理很简单,触发form的submit()就可以了 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>无标题页</title> <script src="js/jquery-1.4.4.min.js" type="text/

表单无刷新上传图片

近期做有关上传图片的项目,发现都没有使用无刷新页面上传方式,都是通过传统的上传图片跳转然后显示图片,这对于上传多张图片就太不适用! 网上也有各种异步上传的插件 如 swfupload等比较庞大的插件,利用flash上传,顺带介绍一个比较简洁的ajax上传图片的插件ajaxFileUpload: 直接上地址:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html 现在普通上传方式上改造一下,实现无刷新上传 通过隐藏ifram