이 글에서는 새로고침 없이 진행률 표시줄을 사용하여 PHP+Ajax 이미지를 업로드하는 예를 주로 소개하고, 새로고침하지 않고 진행률 표시줄을 사용하여 PHP에서 이미지를 업로드하는 코드를 자세히 정리했습니다.
프로젝트 요구 사항: 1. 새로 고침 없이 진행률 표시줄이 있는 PHP+Ajax 이미지 업로드, 2. 진행률 표시줄 포함. 필수 플러그인: jquery.js, jquery.form.js.
저는 현재 Ajax 업로드 기능이 필요한 모바일 웹 프로젝트를 진행하고 있습니다. 이 프로젝트에서는 새로 고치지 않고 진행률 표시줄이 있는 이미지를 업로드하기 위해 PHP가 필요합니다. 그림
이 예제에서는 데모에 포함된 jquery.js, jquery.form.js를 사용해야 합니다. 기사.
첫 번째 단계는 프런트 엔드 페이지 index.html을 만드는 것입니다
이 섹션은 프런트 엔드 디스플레이 콘텐츠입니다. 여기서 설명해야 할 것은 input:file 태그라는 것입니다. 별로 아름답지 않아서 숨깁니다. 그리고 .uploadbtn 태그를 사용하여 파일 태그의 클릭 이벤트를 호출하여 파일을 열고 선택합니다.
참고: 파일을 업로드할 때 양식 속성 enctype을 multipart/form-data
nbsp;HTML> <meta> <title>php-ajax无刷新上传(带进度条)demo</title> <meta> <meta> <script></script> <script></script> <link> <p> </p>
50%
点击上传文件<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>
$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":"上传成功"}';