1

我正在使用名为plupload的异步文件上传工具。我已经在独立页面上设置了一切并以我想要的方式工作,但是我遇到了问题。我将我的代码转移到内容管理系统,该系统将所有每页PHP都存储在数据库中 - 我认为,它还解析了PHP代码片段,以检查所有内容是否无错。清除PHP页面

问题是这样的。我想返回成功上传的回复。

在独立页面上,我使用die('响应')并在HTML部分之前暂停PHP。在这种情况下,我不能这样做,因为CMS仍会完整地提供页面的其余部分。

我需要的形式提交给自己,因为我将一些非JavaScript工具和降解形式验证等

没有人有一个简单的解决方案?我目前正在测试任何异步响应(在发布后,我的意思是),并称完成上传时的“成功”,如果你遵循我的意思。我不喜欢它。我想知道在任何不成功的情况下强制服务器发生错误(如果可以的话)。这会是一种特别糟糕的做法吗?

回答

0

我在使用上述MySQL的建议启发的技术。

plupload包括FileUploaded事件。

我射击的上传和发布之前产生的随机数与每个文件一起。一旦我完成在服务器端移动文件(实际上是电子邮件附件) - 如果邮件发送成功,我使用随机数作为名称和“成功”或类似内容编写一个小文本文件。然后,当plupload的FileUploaded被激发时,我向一个小的独立PHP文件发出一个新的异步请求,传递相同的随机数,并在解除链接前读取文件。

再次感谢您的帮助。似乎很好地工作。

+0

一种穷人的服务器cookie /数据库条目 – stackuser10210 2012-01-15 20:51:46

2

如果你愿意覆盖CMS的index.php文件,这将工作。

  • 将当前index.php重命名为其他内容。我们会说'cms.php'。您可能需要更改权限,以便只有您的服务器可以读取它。
  • 创建一个名为'index.php'的新PHP文件。我们在PHP手册中使用了example from the include docs(#6)。这里是the (modified) code
    • 注:压痕获得的所有扭曲,所以我会代替它引擎收录。随意编辑

如果在您的网站的任何部分的时候,你要失败的话,你可以粘在$GLOBALS['failContent']真实数据,而用户将不会看到任何CMS生成的输出。


我不知道这样做的时候die会有什么样的影响,但我相信它会妨碍我们输出什么...但我不肯定。有人知道吗?

+0

我不觉得我很舒服覆盖这个功能的index.php,但这看起来确实可以工作。谢谢。 – stackuser10210 2012-01-08 19:08:18

2

将这个代码在PHP文件

<?php 
$uploaddir='../uploads/'; 
$uploadfile=mysql_prep($uploaddir.basename($_FILES['uploadfile']['name'])); 
if(move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile)) 
{ 
    $name=mysql_prep(($_FILES['uploadfile']['name'])); 
    $type=mysql_prep(($_FILES['uploadfile']['type'])); 
    $data=($uploadfile); 
    $size= intval($_FILES['uploadfile']['size']); 
    #echo $data; 
    $branch=mysql_prep($_POST['branch']); 
    $sem=mysql_prep($_POST['sem']); 
    $query="INSERT INTO upload_file (name,type,data,size,created,branch_id,sem_id) VALUES ('{$name}','{$type}','{$data}','{$size}',NOW(),'{$branch}','{$sem}')"; 
    $result=mysql_query($query); 
    if($result){ 
     echo"<h2>file successfully uploaded<h2>"; 
     redirect_to(root."afterlogin/upload.php?spload=0112"); 
    } 
    else{ 
     echo" the file you insert can't be uploaded"; 
    } 

,包括这对HTML文件

<?php if(isset($_GET['spload'])){ 
$upload_process="you have successfully uploaded your file. "; 
$upr=1; 

    }else{ 

    $upr=0; 

} 

?> 
+1

谢谢你。我对mysql_prep不熟悉,但您在那里给了我几个想法。 – stackuser10210 2012-01-08 19:10:12