无刷新上传图片,ajax 和 iframe

简介:

iframe 上传


upload.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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 无刷新上传图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
< 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方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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'=>'上传失败')));
   }
}

本文转自  陈小龙哈   51CTO博客,原文链接:http://blog.51cto.com/chenxiaolong/1949712
相关文章
|
3月前
|
前端开发 JavaScript
使用ajax上传图片
使用ajax上传图片
15 0
|
Web App开发 JavaScript 前端开发
前端接收数据流实现图片预览效果--ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践
本文为转载文章 原文链接:https://www.cnblogs.com/cdemo/p/5225848.html 首先要谢谢这位大神的无私贡献!解决了我的问题也完美表达了我当时的心路历程 ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践 写在前面 :从提出需求到完美的解决问题,实现过程是曲折的。
7931 0
|
9月前
|
前端开发
ajax 通过move_uploaded_file函数上传图片获取$_FILES['file']对象的属性内容
ajax 通过move_uploaded_file函数上传图片获取$_FILES['file']对象的属性内容
38 0
|
前端开发
使用SpringMvc跨服务器上传图片,Ajax异步刷新图片框显示图片功能请求不到后台,onChange事件没有激活的源码?
使用SpringMvc跨服务器上传图片,Ajax异步刷新图片框显示图片功能请求不到后台,onChange事件没有激活的源码?
81 0
使用SpringMvc跨服务器上传图片,Ajax异步刷新图片框显示图片功能请求不到后台,onChange事件没有激活的源码?
|
开发框架 移动开发 前端开发
ASP.NET MVC中使用jQuery Ajax通过FormData对象异步提交图片文件到服务端保存并返回保存的图片路径
ASP.NET MVC中使用jQuery Ajax通过FormData对象异步提交图片文件到服务端保存并返回保存的图片路径
250 0
|
前端开发
ajax图片上传
ajax图片上传
133 0
|
JSON 前端开发 JavaScript
ajax实现异步上传图片
ajax方法的使用,多文件的上传,
6623 0
|
JavaScript 前端开发 .NET
|
JavaScript 前端开发 UED
巧妙利用iframe,实现和AJAX一样的异步提交表单效果
面对有大量表单需要提交的项目,如果在服务器端进行验证,提交表单时会有一个页面跳转,会让人觉得体验不佳。但如果全部用AJAX提交表单,那么代码量又太大。这个时候我们需要用到下面的技巧。
1346 0