一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - php+html5實現(xiàn)無刷新圖片上傳教程

php+html5實現(xiàn)無刷新圖片上傳教程

2020-12-17 16:09跡憶 PHP教程

這篇文章主要為大家介紹了php+html5實現(xiàn)無刷新圖片上傳教程,一種全新的上傳圖片的方式,利用html5的FileReader讀取圖片文件,感興趣的小伙伴們可以參考一下

本篇向大家介紹一種全新的上傳圖片的方式,利用html5的filereader讀取圖片文件,然后將數(shù)據(jù)傳輸?shù)椒?wù)器再使用php進行處理。實現(xiàn)過程如下(帶圖片預(yù)覽功能)
前端html代碼 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>上傳</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<style>
.upload{
  width:300px;
  height:200px;
  position:relative;
}
.upload input[type='file']{
  position:absolute;
  width:70px;
  top:0;
  left:0;
  z-index:10;
  opacity:0;
  filter:alpha(opacity=0);
}
.upload input.selbutton{
  width:70px;
  height:30px;
  background:#cf001b;
  color:#fff;
  font-size:14px;
  position:absolute;
  top:0;left:0;
  z-index:9;
  border:none;
  cursor:pointer;
}
.upload input.upbutton{
  width:70px;
  height:30px;
  background:#cf001b;
  color:#fff;
  font-size:14px;
  position:absolute;
  top:50px;left:0;
  z-index:10;
  border:none;
  cursor:pointer;
}
</style>
</head>
<body>
<div class='upload'>
  <input type="file" name="file" />
  <input type="button" name="selbutton" class="selbutton" value="選擇文件" />
  <input type="button" name="upbutton" class="upbutton" value="上傳" />
</div>
<div class='previews'>
  <img src="#" class="image_thumb" alt="圖片預(yù)覽"/>
</div>
</body>
</html>

樣式如下圖

php+html5實現(xiàn)無刷新圖片上傳教程

接下來是js代碼

?
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
<script type="text/javascript">
  $(".upbutton").click(function(){
    //定義允許上傳的圖片格式 在前臺就可以直接判斷,不合法的格式將不會上傳
   var filetype = ['jpg','jpeg','png','gif'];
   if($('.image').get(0).files){
      fi = $('.image').get(0).files[0]; //得到文件信息
      //判斷文件格式是否是圖片 如果不是圖片則返回false
      var fname = fi.name.split('.');
      if(filetype.indexof(fname[1].tolowercase()) == -1){
        alert('文件格式不支持');
        return ;
      }
      //實例化h5的filereader
      var fr = new filereader();
      fr.readasdataurl(fi); //以base64編碼格式讀取圖片文件
      fr.onload = function(frev){
        pic = frev.target.result; //得到結(jié)果數(shù)據(jù)
      //開始上傳之前,預(yù)覽圖片
 $('.image_thumb').attr('src',pic);
//使用ajax 利用post方式提交數(shù)據(jù)
        $.post(
          'handle.php',
          {
             message:pic,
            filename:fname[0],
            filetype:fname[1],
            filesize:fi.size
          },
          function(data){
            data = eval('('+data+')');
            if(data.code == 1 || data.code == 2){
              console.log('上傳失敗')
            }else if(data.code == 0){
              console.log('上傳成功')
            }
          }
        );
      }
    }
  })
</script>

接下來是php處理代碼  handle.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$imgtype = array(
  'gif'=>'gif',
  'png'=>'png',
  'jpg'=>'jpeg',
  'jpeg'=>'jpeg'
); //圖片類型在傳輸過程中對應(yīng)的頭信息
$message = $_post['message']; //接收以base64編碼的圖片數(shù)據(jù)
$filename = $_post['filename']; //接收文件名稱
$ftype = $_post['filetype']; //接收文件類型
//首先將頭信息去掉,然后解碼剩余的base64編碼的數(shù)據(jù)
$message = base64_decode(substr($message,strlen('data:image/'.$imgtype[strtolower($ftype)].';base64,')));
$filename = $filename.".".$ftype;
$furl = "d:/now/";
//開始寫文件
$file = fopen($furl.$filename,"w");
if(fwrite($file,$message) === false){
  echo json_encode(array('code'=>1,'con'=>'failed'));
  exit;
}
echo json_encode(array('code'=>0,'con'=>$filename));

選擇文件然后點擊上傳的效果如下圖

php+html5實現(xiàn)無刷新圖片上傳教程

以上就是整個圖片上傳的代碼。當然對于php的部分還有很多可以優(yōu)化的地方,比如文件名部分,可以重命名,以保證相同文件名上傳以后的文件名是不同的等等。這種上傳方式我也是剛開始使用,當初是受node.js做上傳的的啟發(fā),然后嘗試著應(yīng)用于php,沒想到還真能上傳成功。

希望大家也可以按照此方法實現(xiàn)圖片上傳。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 纲手被强喷水羞羞漫画 | 午夜福到在线4国产 | 超大阿力gaysex | 91尤物在线 | 99成人国产精品视频 | 性欧美高清理论片 | 奇米7777第四色 | 秘书喂奶好爽一边 | 国产3344视频在线观看免费 | 国产一区二区在线观看视频 | 亚洲日日做天天做日日谢 | 国产精品nv在线观看 | 手机在线观看国产精选免费 | 日本狠狠操 | 免费观看无人区完整版 | 青柠影院在线观看免费完整版1 | 成年人在线免费观看视频网站 | 无人区在线观看免费视频国语 | 午夜一区二区三区 | 草莓丝瓜芭乐樱桃榴莲色多黄 | 国产一区日韩二区欧美三区 | 女bbbbxxx孕妇| 日韩操片| 91精品国产91久久久久久 | 亚洲午夜大片 | 亚洲欧美综合一区 | gav男人天堂| 国产卡一卡二卡四卡无卡 | 久久五月综合婷婷中文云霸高清 | 国产成人精品一区二区仙踪林 | 99久久免费看精品国产一区 | 日本68xxxxxxxxx24| 女人与d0gxxx| 韩国三级hd中文字幕李采潭 | 免费在线观看中文字幕 | 精品女同同性视频很黄很色 | 成人丁香乱小说 | 男男gaygays18中国 | 色老板在线播放 | 亚洲国产成人在线 | 好涨好大我快受不了了视频网 |