1

我正在使用一个名为 plupload 的异步文件上传工具。我已经在独立页面上按照我想要的方式进行了所有设置和工作,但是我遇到了问题。我正在将我的代码传输到一个内容管理系统,该系统将所有每页 PHP 存储在一个数据库中——我认为,它还解析 PHP 片段,以检查所有内容是否没有错误。

问题是这样的。我想在成功上传时返回响应。

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

我需要将表单提交给自己,因为我正在合并一些非 JavaScript 的东西来进行降级的表单验证等。

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

4

3 回答 3

2

Put this code in php file

<?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";
  }

and include this to html file

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

  }else{

    $upr=0;

 }

?>
于 2012-01-08T18:47:02.413 回答
2

如果您愿意覆盖 CMS 的 index.php 文件,这将起作用。

  • 将当前的 index.php 重命名为其他名称。我们会说“cms.php”。您可能想要更改权限,以便只有您的服务器可以从中读取。
  • 创建一个名为“index.php”的新 PHP 文件。我们使用PHP 手册中包含文档(#6) 中的示例。这是(修改后的)代码
    • 注意:缩进很麻烦,所以我会粘贴它。随意编辑

如果在您网站的任何部分的任何时候您想让它失败,您只需将真实数据粘贴到 中$GLOBALS['failContent'],用户将永远不会看到任何 CMS 生成的输出。


我不确定die这样做会产生什么影响,但我相信它会阻止我们输出任何东西......但我不确定。有人知道吗?

于 2012-01-08T18:44:37.020 回答
0

我正在使用一种受上述 MySQL 建议启发的技术。

plupload 包含一个 FileUploaded 事件。

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

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

于 2012-01-08T21:04:21.697 回答