Uploadify не загружает файл, но указывает на успех - PullRequest
6 голосов
/ 18 марта 2011

Я нашел несколько постов с той же проблемой, что и у меня, но решения не представлены.Я не уверен на 100%, что с этим делать, но надеюсь, что вы можете помочь.

Я пытаюсь использовать Uploadify для загрузки файлов, но происходит следующее:

  1. Просмотрфайл успешен (следовательно, мои атрибуты «script» и «uploaded» верны)
  2. Индикатор выполнения показывает «100%» и завершает.Атрибут 'folder' является правильным.)
  3. Если я умру своим сценарием перед каким-либо выводом, шаг # 3 не произойдет - следовательно, он достигнет указанного «сценария».После вывода скрипт не умирает.
  4. ФАЙЛ НЕ НАЙДЕН В FILESYSTEM

Не уверен, насколько это возможно - насколько я могу судить, все правильно.

Вот мой код:

<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-скрипта - это имя целевого файла, которое я изменил, чтобы обеспечить какое-то уникальное имя файла (хотя и не защищенное от ошибок), но в противном случаесценарий такой же, как выпущенный (с краткими комментариями, удаленными здесь для краткости).

Кто-нибудь может сказать, почему Uploadify указывает, что загрузка файла прошла успешно, но в каталоге загрузки нет файла?Я использую Windows, PHP5.3, и папка для загрузки доступна для записи (я могу загружать туда файлы без Uploadify, но не с ней)

Заранее спасибо!

Kobus

1 Ответ

0 голосов
/ 09 мая 2011

У меня были похожие проблемы на машине с Linux. Оказалось, что конфигурация PHP на моем сервере была самым важным. PHP работал в безопасном режиме. Поскольку я загрузил сценарии Uploadify через FTP, файлы сценариев были сохранены в файловой системе с моими данными пользователя FTP. Поскольку временная папка PHP принадлежала корневому каталогу сервера, у меня возникло несоответствие UID, то есть временный файл загрузки был приписан корневому каталогу, а скрипт загрузки, который пытался переместить его, принадлежал пользователю FTP. Это обмануло.

Для решения этой проблемы я изменил владельца php-скрипта uploadify на root и с этого момента он работал.

...