>  기사  >  백엔드 개발  >  PHP apc ajax_php 기술로 구현된 Ajax_upload 업로드 진행률 바코드

PHP apc ajax_php 기술로 구현된 Ajax_upload 업로드 진행률 바코드

WBOY
WBOY원래의
2016-05-16 19:59:291390검색

이 기사의 예에서는 PHP apc ajax로 구현된 ajax_upload 업로드 진행률 바코드를 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

업로드 진행률 표시줄은 어떻게 구현되나요? 찾아보고 업로드를 선택하면 임시 파일이 생성됩니다. 업로드가 완료된 후 이 임시 파일을 서버에 업로드하세요. 삭제됩니다. 이 임시 파일의 크기를 읽을 수 있으면 업로드 진행 상황을 알 수 있습니다. php apc 모듈은 이 기능을 구현할 수 있습니다.

1. 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

2. 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. upload_test.php

<&#63;php
$id = uniqid(rand(), true);
&#63;>
<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="<&#63;=$id&#63;>" />
<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_PROGRESS의 용도는 무엇인가요? 업로드된 파일에 태그를 추가하고 이 태그를 사용하여 다른 PHP 프로그램에서 액세스할 수 있습니다. 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&#63;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);
}
}
});
}

위에서 주의할 점은 APC_UPLOAD_PROGRESS:$("#progress_key").val()입니다. 여기서 키는 APC_UPLOAD_PROGRESS가 아니면 apc가 임시 파일을 찾을 수 없습니다. 여기서 ajax_upload.js를 사용해야 하는 이유는 jquery와 함께 제공되는 ajax에는 파일 업로드를 위한 매개변수가 없기 때문입니다. 즉, type='file'의 콘텐츠는 PHP 끝에서 얻을 수 없습니다.

4. upload.php 파일 업로드

<&#63;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>";
}
&#63;>

파일이 비교적 큰 경우 http를 사용하여 업로드하지 마세요. 너무 느리고 웹사이트의 안정성에 영향을 미칩니다.

5. Progress.php는 Ajax 호출에 사용되는 진행 파일입니다

<&#63;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;
}
}
&#63;>

Ajax 비동기 요청으로 생성된 데이터를 살펴보세요.

php apc ajax 업로드 진행 표시줄

매개변수 설명:

총 파일 크기
현재 업로드된 크기
filename 업로드 파일명
이름 태그 이름
done 업로드 성공 횟수는 1입니다
cancel_upload 사용자가 업로드를 취소합니다. 이는 업로드가 완료된 후에만 발생합니다.
rate 업로드 속도, 업로드가 완료된 경우에만 사용 가능
start_time 시작 시간

PHP 파일 및 Ajax 작업과 관련된 더 많은 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제인 "php 파일 작업 요약" 및 "PHP ajax 기술 및 응용 프로그램 요약을 확인할 수 있습니다. "

이 기사가 PHP 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.