0
想获得文件的进度被复制无法获取文件拷贝进度
最初我送使用下面的代码复制文件的请求。一旦文件被创建。我发送响应成功= 1,并开始复制过程,也叫getProgress
$.ajax({
url:'copyFile.php',
type: 'post',
dataType: 'json',
data: {'data':someData},
success: function(data) {
if(data.success){
progressIndex=setInterval(getProgress, 1000);
}
},
error:function(err){
console.log(err);
}
});
function getProgress(){
$.ajax({
url:'FileUploadProgress.php',
type: 'post',
dataType: 'json',
data: {'progress':'1'},
success: function(data) {
if(!data.success){
clearTimeout(progressIndex);
}
},
error:function(err){
console.log(err);
}
});
}
FileUploadProgress.php
class FileUploadProgress{
private $filename;
private $progress;
public function setfileProgress($filename,$progress){
$this->filename=$filename;
$this->progress=$progress;
}
function returnProgress(){
if(empty($this->filename) || empty($this->progress)){
echo json_encode(array('success'=>'0'));
}else{
echo json_encode(array('success'=>1,'filename'=>$this->filename,'progress'=>$this-
>progress));
}
}
}
$fileuploadprogress=new FileUploadProgress;
if($_POST['progress']){
$fileuploadprogress->returnProgress();
}
在复制我得到的进展,并调用该函数setfileProgress 来设置进度。另外在客户端我已经请求了进度,但是wat得到的是成功= 0并且$ this-> progress是空的 我在代码中丢失了什么。请让我知道
这并不是一件简单的工作,只用php来处理。 你必须明白,每次执行后,一切都会丢失。因此,在每个ajax调用中创建一个新的FileUploadProgress实例,女巫无法访问先前的实例属性,将其视为每个ajax调用都启动一个新程序。 –
好的!所以我可以在复制之前创建实例并将其作为响应发送回客户端。然后通过那个实例来获得进展? – nyfer
@PoelincaDorin或可能我可以使用单例模式来检查是否只创建一个实例? – nyfer