2011-03-18 50 views
6

我發現了一些與我有同樣問題的帖子,但是沒有提供任何解決方案。我不是100%確定要做什麼,但希望你能提供幫助。Uploadify不上傳文件,但表示成功

我試圖用Uploadify上傳文件,但會發生以下情況:

  1. 瀏覽文件成功(因此我的「script」和「上傳」屬性是正確的)
  2. 進度條說「 100%「並完成。
  3. 的onComplete火災話說上傳成功(根據驚動了路徑,「文件夾」屬性是正確的。)
  4. 如果我任何輸出死之前我的腳本,#3步驟不會發生 - 因此,它達到了「腳本」指定。輸出後,腳本不會死亡。
  5. 文件中找不到其文件系統是

不知道這是怎麼可能的 - 據我所知,一切是正確的。

這裏是我的代碼:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#addimage").validationEngine(); 
     $('#imagefile').uploadify({ 
      'uploader': "/js/uploadify/uploadify.swf", 
      'fileExt': "*.jpg;*.jpeg;*.png;*.gif", 
      'buttonText': "Browse...", 
      'script': "/js/uploadify/uploadify.php", 
      'cancelImg': "/js/uploadify/cancel.png", 
      'folder': "/uploads", 
      'fileDesc': 'Only *.jpg, *.jpeg, *.png, *.gif are allowed', 
      'auto': true, 
      'onComplete': function(event, ID, fileObj, response, data) { 
       $('#name').val('Please edit this text to add a description...'); 
       alert('Uploaded ' + fileObj.name + ' to ' + fileObj.filePath + '.'); 
      } 
     });   
    }); 
</script> 

<input type="file" id="imagefile" name="imagefile" /> 

<?php 

    if (!empty($_FILES)) { 
     $tempFile = $_FILES['Filedata']['tmp_name']; 
     $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'; 
     $targetFile = str_replace('//', '/', $targetPath) . 'image_' . date('YmdHis') . '_' . $_FILES['Filedata']['name']; 
     move_uploaded_file($tempFile,$targetFile); 
     echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile); 
    } 

?> 

PHP腳本的唯一的變化是,我已經改變了的TargetFile的名字,以保證某種獨特的文件名(但不是萬無一失的),但在其他劇本是與發佈相同(爲簡潔起見,此處刪除了註釋)。

有人可以告訴我爲什麼Uploadify表示文件上傳成功,但上傳目錄中沒有文件存在?我使用的是Windows,PHP5.3,並且uploads文件夾是可寫的(我可以在沒有Uploadify的情況下上傳文件,但不能與它一起使用)

在此先感謝!

Kobus

回答

0

我在Linux機器上遇到了類似的問題。事實證明,我的服務器上的PHP配置是cuplrit。 PHP在安全模式下運行。由於我通過FTP上傳了Uploadify腳本,所以腳本文件與我的FTP用戶詳細信息一起存儲在文件系統中。由於PHP的臨時文件夾屬於服務器根目錄,因此我的UID不匹配,即臨時上傳文件歸因於root,而嘗試移動它的上載腳本屬於FTP用戶。這使它碎片化。

爲了解決這個問題,我將uploadify php腳本的所有權更改爲root並從那裏運行。