Uploadify и PHP переместить файлы проблема - PullRequest
1 голос
/ 23 марта 2012

Я создал скрипт, который будет загружать файлы в общую папку выгрузки, однако загрузка работает нормально, когда я пытаюсь заставить скрипт переместить файлы из временной папки в папку выгрузки. Я получаю следующую проблему.

[23-Mar-2012 18:57:21 UTC] PHP Warning:  move_uploaded_file(): Unable to move '/var/tmp/php3O42Kn' to '/home3/***/***/***/MAINFOLDER/uploads/itworks/' in /home3/***/***/***/MAINFOLDER/admin/uploader.php on line 21

Когда папка для выгрузки находилась в том же каталоге, что и скрипт uploader.php, он работал, однако я поместил свой скрипт uploader.php в папку /admin, сохранив /uploads в корневой папке. Ниже приведен скрипт, который я использую.

uploader.php (main / admin)

  <?php

    if (!empty($_FILES)) {
        $tempFile = $_FILES['Filedata']['tmp_name'];


        $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
        $targetFile =  str_replace('//','/',$targetPath) . $filename;


        // $fileTypes  = str_replace('*.','',$_REQUEST['fileext']);
        // $fileTypes  = str_replace(';','|',$fileTypes);
        // $typesArray = split('\|',$fileTypes);
        // $fileParts  = pathinfo($_FILES['Filedata']['name']);

        // if (in_array($fileParts['extension'],$typesArray)) {
                if (!file_exists($targetPath)) {  
                     mkdir(str_replace('//','/',$targetPath), 0755, true);  
                }

            move_uploaded_file($tempFile,$targetFile);
            echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
        // } else {
        //  echo 'Invalid file type.';
        // }
    }
    ?>

upload.php (main / admin)

<script type="text/javascript"> 
    $(document).ready(function() {
        $("#file_upload").uploadify({
            'uploader'     : 'includes/uploadify.swf',
            'script'         : 'uploadify.php',
            'folder'         : '../uploads',
            'cancelImg'      : 'includes/images/cancel.png',
            'multi'          : true,
            'auto'           : false,
            'fileTypeExts'        : '*.jpg;*.gif;*.png',
            'fileTypeDesc'       : 'Image Files (.JPG, .GIF, .PNG)',
            'queueID'        : 'custom-queue',
            'queueSizeLimit' : 10,
            'simUploadLimit' : 3,
            'sizeLimit'   : 10240000,
            'removeCompleted': true,
            'onAllComplete'  : function(stats) {
                $('#status-message').text(data.filesUploaded + ' files uploaded, ' + data.errors + ' errors.');
            }
        });
    });
</script>

Я думаю, что проблема здесь: 'folder' : '../uploads',. В идеале я хочу, чтобы файл uploader.php автоматически перемещал каталог на один уровень назад, однако все мои методы, похоже, не сработали.

Большое спасибо всем, кто мог бы помочь мне пролить свет на это!

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Это может быть одно из следующих значений в зависимости от того, как далеко находится root от текущего каталога администратора.

'../../uploads'

или

'../../../uploads
0 голосов
/ 23 марта 2012

Если вы говорите, что текущая конфигурация работает нормально, она должна работать с любой папкой. Но проблема может легко возникнуть из папки, недоступной для записи (вы проверяли права доступа к папке?), Из-за отсутствия косой черты в «../uploads/».

Или, как предположил Interstellar_Coder, возможно, отсутствует другой набор '../'.

...