Sun*_*nny 5 php ajax jquery file-upload
我在一开始就遇到了PhP文件上传进度监视器的问题.
首先,这是相关的PhP.ini设置(指令,本地值和主值):
session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_
Run Code Online (Sandbox Code Playgroud)
这是表格(简化):
<form id="fileupload" style="position:relative;" target="iframe_fileupload" action="http://www.athiyoga.org/testupload.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="<?echo ini_get("session.upload_progress.name");?>" value="first"/>
<input type="file" name="file_1">
<button type="submit" >Start Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
我有JQUERY Ajax代码,在同一个PhP文件中(当然,作为JS脚本),如:
$('#fileupload').submit(function(event){
//UPDATED THIS PART after reading: http://stackoverflow.com/questions/19336610/delay-in-populating-session-upload-progress-data
//POSTING the magic variable PHP_SESSION_UPLOAD_PROGRESS during status inquiry too
var params = {PHP_SESSION_UPLOAD_PROGRESS:"first", some_var:20 };
var data_params = jQuery.param( params );
setTimeout(function(){
upload_promise = $.ajax({
url: 'upload_status.php',
data: data_params,
dataType: 'html',
type : 'POST',
cache : false
});
$.when(upload_promise).done(function(status_response){
$('#response_status').html(status_response);
});
},5000);
...
...
Run Code Online (Sandbox Code Playgroud)
upload_status.php简单地回显了$ _SESSION数组.我还在form-php中设置了一个测试会话变量,以确保AJAX(通过upload_status.php)选择该会话变量.确实如此.但不是$ _SESSION数组中上传状态的符号(无变量/索引)!文件上传.我确保文件足够大,以便5000毫秒足以报告一些中间状态.
我之前从未实现过PhP文件上传进度条,所以我想知道我是否遗漏了一些东西.一旦我在上传中获得一个状态点,我将能够完成剩下的工作.
谢谢
小智 11
可能会有一些问题,我已经列出了一些问题.
这可以帮助您跟踪进度条http://pecl.php.net/package/uploadprogress
我希望这能帮助你解决问题.