本篇文章主要介紹了PHP+Ajax無刷新帶進度條圖片上傳範例,詳細的整理PHP無刷新上傳圖片,並且要帶進度條的程式碼,有需要的可以了解一下。
專案需求:1.PHP+Ajax無刷新帶進度條圖片上傳,2.帶進度條。所需外掛:jquery.js,jquery.form.js。
最近在做一個手機web項目,需要用到Ajax上傳功圖片能,項目要求PHP無刷新上傳圖片,並且要帶進度條,下面就來講一下我的實現方法,先看效果圖
本範例需要使用的是jquery.js,jquery.form.js,demo裡麵包含有,你可以在文章下方進行下載。
第一步,建立前端頁面index.html
此段是前端展示內容,這裡需要說明的是由於input:file標籤顯示不太美觀,所以我把它隱藏了。而使用一個a標籤.uploadbtn來呼叫file標籤的click事件,用來開啟並選擇檔案。
注意:檔案上傳時form的屬性enctype必須設定為:multipart/form-data
nbsp;HTML> <meta> <title>php-ajax无刷新上传(带进度条)demo</title> <meta> <meta> <script></script> <script></script> <link> <p> </p>
50%
点击上传文件第二步,Ajax提交部分
當然如果失敗,有error回調函數幫你進行高度。
<script> $(document).ready(function(e) { var progress = $(".progress"); var progress_bar = $(".progress-bar"); var percent = $('.percent'); $("#uploadphoto").change(function(){ $("#myupload").ajaxSubmit({ dataType: 'json', //数据格式为json beforeSend: function() { //开始上传 progress.show(); var percentVal = '0%'; progress_bar.width(percentVal); percent.html(percentVal); }, uploadProgress: function(event, position, total, percentComplete) { var percentVal = percentComplete + '%'; //获得进度 progress_bar.width(percentVal); //上传进度条宽度变宽 percent.html(percentVal); //显示上传进度百分比 }, success: function(data) { if(data.status == 1){ var src = data.url; var attstr= '<img src="'+src+'" alt="PHP+Ajax無刷新帶進度條圖片上傳範例" >'; $(".imglist").append(attstr); $(".res").html("上传图片"+data.name+"成功,图片大小:"+data.size+"K,文件地址:"+data.url); }else{ $(".res").html(data.content); } progress.hide(); }, error:function(xhr){ //上传失败 alert("上传失败"); progress.hide(); } }); }); }); </script>
後端處理程式碼,就是PHP檔案,不過上傳的時候需要做一些php
後端處理程式碼,就是PHP檔案,不過判斷,如檔案。
$picname = $_FILES['uploadfile']['name']; $picsize = $_FILES['uploadfile']['size']; if ($picname != "") { if ($picsize > 2014000) { //限制上传大小 echo '{"status":0,"content":"图片大小不能超过2M"}'; exit; } $type = strstr($picname, '.'); //限制上传格式 if ($type != ".gif" && $type != ".jpg" && $type != "png") { echo '{"status":2,"content":"图片格式不对!"}'; exit; } $rand = rand(100, 999); $pics = uniqid() . $type; //命名图片名称 //上传路径 $pic_path = "images/". $pics; move_uploaded_file($_FILES['uploadfile']['tmp_name'], $pic_path); } $size = round($picsize/1024,2); //转换成kb echo '{"status":1,"name":"'.$picname.'","url":"'.$pic_path.'","size":"'.$size.'","content":"上传成功"}';