HTML / PHP / JS Выберите несколько файлов и загрузите через FTP - PullRequest
1 голос
/ 21 марта 2012

Hy, мне нужно загрузить серию файлов на сервер (в частности, набор изображений). Мне нужно ввести один файл для выбора нескольких файлов (также в IE), у меня нет разрешения писать напрямую с помощью PHP на сервере (разрешение 775, но пользователи FTP и apache находятся в 2 разных группах), поэтому мне нужно использовать FTP соединение (я уже могу сделать это с одним файлом). Может кто-нибудь посоветовать мне, если есть способ сделать это? Заранее спасибо

Michele

Редактировать: я пытаюсь использовать uploadify, как предложил Ник.

 <script type="text/javascript">
    $(document).ready(function() {
        $('#file_upload').uploadify({
            'uploader'  : 'JS/uploadify.swf',
            'script'    : 'upload.php',
            'cancelImg' : 'JS/cancel.png',
            'folder'    : 'TEST/UPLOADS',
            'auto'      : true,
            'multiple'  : true,
            'removeCompleted' : false,
            'queueSizeLimit' : 3,
            'queueID' : 'queue',
            'simUploadLimit' : 1
         );
    });
</script>

Я пытался установить ftp соединение и ftp_put в upload.php, это правильно ?? Если я попытаюсь добавить параметр 'scriptData', он не будет доступен для $ _POST [], как предложено в документации, почему?

вот моя тестовая ссылка: тест

Тест показывает, что файлы загружаются, но в папке сервера нет файлов.

вот мой код upload.php:

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

    //$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';  // 2
    //$targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; // 3


    $ftp_server = "***";  //address of ftp server.
    $ftp_user_name = "***"; // Username
    $ftp_user_pass = "***";   // Password
    $conn_id = ftp_connect($ftp_server);
    ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
    ftp_pasv ( $conn_id, true );

    if( ftp_fput($conn_id, 'TEST/' . $_FILES['Filedata']['name'], $tempFile, FTP_BINARY)){                       // 4
        echo true;
    }else{
        echo false;
    }

    ftp_close($conn_id);
} else {
    echo false;
}

1 Ответ

0 голосов
/ 21 марта 2012

Чтобы разрешить загрузку нескольких файлов, я обычно использую uploadify Его документация довольно хорошая, и она довольно проста в использовании.

Вам нужно использовать что-то подобное, чтобы сохранить соединение открытым и отправлять файлы без перезагрузки страницы.

EDIT:

Ваш код должен выглядеть примерно так:

<script type="text/javascript">
$(function() {
    $('#custom_file_upload').uploadify({
        'uploader'       : 'JS/uploadify.swf',
        'script'         : 'JS/uploadify.php',
        'cancelImage'      : 'JS/uploadify-cancel.png',
        'multi'          : true,
        'auto'           : true,
        'fileTypeExts'        : '*.jpg',
        'fileTypeDesc'       : 'Image Files (.JPG)',
        'queueID'        : 'custom-queue',
        'queueSizeLimit' : 3,
        'simUploadLimit' : 3,
        'sizeLimit'   : 10240000,
        'removeCompleted': false,
        'onDialogClose'   : function(queue) {
            $('#status-message').text(queue.filesQueued + ' files have been added to the queue.');
        },
        'onQueueComplete'  : function(stats) {
            $('#status-message').text(stats.successful_uploads + ' files uploaded, ' + stats.upload_errors + ' errors.');
        }
    });             
});
</script>

swf изменено на uploader и uploader изменено на script.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...