无刷新上传图片,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://www.yhys.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://www.pangdan.com/images/chunwan.gif"  />
<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' => '上传失败' )));
    }
}
发布了51 篇原创文章 · 获赞 8 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/asxxf/article/details/77932186
今日推荐