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