上传不上传文件,但表示成功

时间:2011-03-18 14:03:28

标签: upload uploadify

我发现一些帖子遇到了同样的问题,但是没有解决方案。我不是100%肯定该怎么做,但希望你能帮忙。

我正在尝试使用Uploadify上传文件,但会发生以下情况:

  1. 浏览文件成功(因此我的'脚本'和'已上传'属性正确)
  2. 进度条显示“100%”并完成。
  3. onComplete fires说上传成功(根据提醒的路径,'folder'属性是正确的。)
  4. 如果我在任何输出之前死了我的脚本,那么#3步骤就不会发生 - 因此它会到达指定的'script'。输出后,脚本不会死。
  5. 文件未在FILESYSTEM中找到
  6. 不确定这是怎么可能的 - 据我所知,一切都是正确的。

    这是我的代码:

    <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表示文件上传成功,但uploads目录中没有文件?我使用的是Windows,PHP5.3,并且uploads文件夹是可写的(我可以在没有Uploadify的情况下上传文件,但不能上传文件)

    提前致谢!

    Kobus

1 个答案:

答案 0 :(得分:0)

我在Linux机器上遇到过类似的问题。事实证明,我的服务器上的PHP配置是杯子。 PHP在SAFE MODE中运行。由于我通过FTP上传了Uploadify脚本,因此脚本文件以我的FTP用户详细信息存储在文件系统中。由于PHP的临时文件夹归服务器根所有,我的UID不匹配,即临时上传文件归属于root,而试图移动它的上传脚本归FTP用户所有。那就是它的碎片。

要解决此问题,我将uploadify php脚本的所有权更改为root,并从那里开始工作。