PHP+apc+ajax 구현 ajax업로드 진행 코드

본 고의 실례 는 PHP+apc+aax 가 실현 한 aax 를 다 루 고 있다업로드 진행 코드.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
진 도 를 올 리 면 어떻게 되 는 거 죠?원 리 는 어 떨 까요?우리 가 탐색 하고 업 로드 를 선택 하면 임시 파일 이 생 성 됩 니 다.업로드 할 때 이 임시 파일 을 서버 에 업로드 하고 업로드 가 완료 되면 이 임시 파일 은 삭 제 됩 니 다.이 임시 파일 의 크기 를 읽 을 수 있다 면 업로드 진도 가 얼마나 되 는 지 알 수 있 습 니 다.phop apc 모듈 은 이 기능 을 실현 할 수 있 습 니 다.
apc 모듈 설치
다운로드 주소:http://pecl.php.net/package/apc

tar zxvf APC-3.1.8.tgz
cd APC-3.1.8/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

php.ini 수정

extension = apc.so
apc.rfc1867 = 1
apc.max_file_size = 200M
upload_max_filesize = 1000M
post_max_size = 1000M
max_execution_time = 600
max_input_time = 600
memory_limit = 128M

수정 후 apache 나 다른 것 을 다시 시작 합 니 다.확인 해 보 세 요.

[root@BlackGhost php]# php -m
[PHP Modules]
apc
cgi-fcgi
ctype
curl
date
dom
eAccelerator
。。。。。。。。

3.업로드test.php

<?php
$id = uniqid(rand(), true);
?>
<html>
<script type='text/javascript' src='jquery-1.3.2.js'></script>
<script type='text/javascript' src='ajaxupload.3.1.js'></script>
<script type='text/javascript' src='upload.js'></script>
<body style="text-align:center;">
<h1>    </h1><form enctype="multipart/form-data" id="upload" method="POST">
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?=$id?>" />
<input type="file" id="file" name="file" value=""/><br/><input id="submit" type="submit" value="Upload!" />
</form>
<div id="progressouter" style="width: 500px; height: 20px; border: 1px solid black; display:none;">
<div id="progressinner" style="position: relative; height: 20px; background-color: red; width: 0%; ">
</div>
</div>
<br />
<div id='showNum'></div><br>
<div id='showInfo'></div><br>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(){
form_submit();
});
</script>

APC_UPLOAD_프로그램,이게 무슨 소 용이 있 죠?업로드 한 파일 에 표 시 를 추가 하면 다른 phop 프로그램 에서 이 태그 로 접근 할 수 있 습 니 다.apc 읽 기 지원.
upload.js 비동기 로 업로드 한 js 파일:

function form_submit (){
new AjaxUpload('#upload', {
action: 'upload.php',
name: 'file',
data: {
APC_UPLOAD_PROGRESS:$("#progress_key").val()
},
autoSubmit: true,
onSubmit: function(file, extension){
$('#progressouter').css('display', 'block');
progress();
},
onComplete: function(file, response){
$("#showInfo").html(response);
}
});
}
function progress (){
$.ajax({
type: "GET",
url: "progress.php?progress_key="+$("#progress_key").val(),
dataType: "json",
cache:false,
success: function(data){
if(data == 0) {
var precent = 0;
} else {
for (i in data) {
if (i == "current") {
var json_current = parseInt(data[i]);
}
if (i == "total") {
var json_total = parseInt(data[i]);
}
}
var precent = parseInt(json_current/json_total * 100);
$("#progressinner").css("width",precent+"%");
$("#showNum").html(precent+"%");
$("#showInfo").html("ok");
}
if ( precent < 100) {
setTimeout("progress()", 100);
}
}
});
}

위 에 주의해 야 할 것 이 있 습 니 다.APCUPLOAD_PROGRESS:$("#progress_key").val()여기 있 습 니 다.key 는 APC 입 니 다.UPLOAD_프로그램 이 이것 이 아니라면 apc 에서 임시 파일 을 찾 을 수 없습니다.여기 서 내 가 왜 ajaxupload.js 는 jquery 가 자체 적 으로 가지 고 있 는 ajax 때문에 자체 매개 변 수 는 파일 을 업로드 하지 않 았 습 니 다.즉,type='file'의 내용 입 니 다.phop 단 에 서 는 전혀 얻 을 수 없습니다.
4.upload.php 파일 업로드

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(empty($_FILES["file"]["tmp_name"])){
echo "no file";
die;
}
$tmp_name = $_FILES["file"]["tmp_name"];
$name = dirname($_SERVER['SCRIPT_FILENAME'])."/upload/".$_FILES["file"]["name"];
move_uploaded_file($tmp_name, $name);
echo "<p>File uploaded.</p>";
}
?>

만약 파일 이 비교적 크다 면 http 방식 으로 업로드 하지 마 세 요.너무 느 리 고 사이트 의 안정성 에 영향 을 줍 니 다.
5.progress.php 에서 진 도 를 얻 은 파일 은 ajax 호출 에 사 용 됩 니 다.

<?php
if(isset($_GET['progress_key'])) {
$status = apc_fetch('upload_'.$_GET['progress_key']);
if($status['total']!=0 && !empty($status['total'])) {
echo json_encode($status);
} else {
echo 0;
}
}
?>

ajax 비동기 요청 으로 생 긴 데 이 터 를 보 세 요.

php apc ajax 업로드 진도 바
매개 변수 설명:
total           파일 크기
current       업로드 한 크기
filename     파일 이름 업로드
name          태그 이름
done          업로드 성공 1
cancel_upload      사용자 업로드 취소,업로드 완료 시 만 가능
rate 업로드 속도,업로드 완료 시 에 만 가능
start_time   시작 시간
더 많은 PHP 파일 및 ajax 작업 과 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기