2016-11-02 1 views
0

누구나이 기능을 구현할 수 있습니까? PHP 파일 업로드 진행

http://php.net/manual/en/session.upload-progress.php

는 TL

; DR은 '이름'으로 입력을 포함하면, 파일을 포함하는 형태의 전기 특성 때 그리고, php.ini 파일 session.upload_progress.name의 값으로 설정한다는 것이다 PHP는 업로드 상태에 대한 데이터를 $ _SESSION으로 채 웁니다.

형태 :

<form action="upload.php" method="POST" enctype="multipart/form-data"> 
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" /> 
<input type="file" name="file1" /> 
<input type="file" name="file2" /> 
<input type="submit" /> 
</form> 

upload.php로

(중요하지만 일반적으로 파일을 실제 이름을 부여하고 실제 디렉토리로 온도에서 업로드 된 파일을 이동 할 경우 분명이 아니다)

<?php 

print_r($_FILES); 

?> 

session.php :

실행이 별도의 PHP Fi를 파일 업로드시 제작이 진행

<?php 

$key = ini_get("session.upload_progress.prefix") . $_POST[ini_get("session.upload_progress.name")]; 
var_dump($_SESSION[$key]); 
?> 

를 확인하기 위해 나는이 스크립트와 php.ini의 설정에서 모든 예측해볼 수의 변화와 $ _SESSION 배열이 어떤 업로드 데이터로 채워되지 않습니다 상관없이 시도했다. Session_start()가 기본적으로 호출됩니다. 나는 5.4 절과 5.6 절에서 모두 시도했다. FastCGI를 사용하거나 사용하지 않고 실행하는 것과 관련된 PHP 설명서의 모든 의견을 시도했습니다. 나는 일반적으로 모든 것을 시도했다.

POST 요청을 사용하여 웹 서버에서 .php 스크립트와 통신하는 데스크톱 응용 프로그램에서 작업 중이므로 JS/HTML5 솔루션이 그림의 일부가 아니므로 브라우저를 사용하지 않기 때문에 이는 중요합니다. 파일 업로드 (upload.php)를 처리하는 스크립트가 업로드 (임시 디렉토리에 임의의 이름으로)가 완료 될 때까지 실제로 실행되지 않기 때문에 PHP에서 자체 측정 진행 기능을 작성할 수 없습니다. 업로드가 끝나고 업로드 스크립트가 실행되어 $ _FILES에 액세스 할 때까지 temp가 연결된 실제 파일을 찾을 방법이 없습니다. 제발 도와주세요. 나는 모든 가능한 가능성을 시험해 보았습니다. 감사.

답변

0

양식 : //이 좋아 보이는

<form action="upload.php" method="POST" enctype="multipart/form-data"> 
    <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" /> 
<input type="file" name="file1" /> 
<input type="file" name="file2" /> 
<input type="submit" /> 
</form> 

upload.php로는 // 보이는 좋아 너무

<?php 

print_r($_FILES); 

?> 

는 Session.php는 //

<?php 
session_start();//leave this out if you are session is starting automatically 
$key = ini_get("session.upload_progress.prefix") ."123"; //123 value of hidden input 
var_dump($_SESSION[$key]); 
?> 

여기에 몇 가지 변화를 추천합니다 주요 도전 과제는 양식 HTML보기에서 세션에 대한 링크 또는 호출 없음 .php. (나는 session.php라는 이름을 사용하지 않는다. 나는 $ _SESSION scoper로 무서워 할 수도있다. 이상적으로 (대부분의 사람들은) JS/Ajax 호출을 사용하여 Session.php를 쿼리하여 결과를 얻을 수 있습니다. 어떤 경우에는 내가 권하고 싶습니다 :

양식 :

<form action="upload.php" method="POST" enctype="multipart/form-data"> 
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" /> 
<input type="file" name="file1" /> 
<input type="file" name="file2" /> 
<input type="submit" /> 
</form> 
<script> 
$(document).ready(function(){ 
    $('form').on('submit',function(){ 
    $.get("session.php", function(response) { 
    console.log(response); // server response-$_SESSION dump 
}); 
    }) 
}) 
</script> 

세션 (이 전에 jQuery를 가져올 기억).ph :

<?php 
session_start();//leave this out if you are session is starting automatically 
$key = ini_get("session.upload_progress.prefix") ."123"; //123 value of hidden input 
var_dump($_SESSION[$key]);//or echo $_SESSION[$key]["bytes_processed"]. I am not sure how the array would playout inside the returned JSON 
?>