Загрузка файлов не работает с помощью jQuery File Upload

0

Проблема:

Чтобы установить переменную сеанса и перенаправить пользователя на другую PHP-страницу после загрузки файла.txt с помощью загрузки файла jQuery.

HTML-код (upload.php):

<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-success fileinput-button">
    <i class="glyphicon glyphicon-plus"></i>
    <span>Add files...</span>
    <!-- The file input field used as target for the file upload widget -->
    <input id="fileupload" type="file" name="files[]" multiple>
</span>
<br>
<br>
<!-- The global progress bar -->
<div id="progress" class="progress">
    <div class="progress-bar progress-bar-success"></div>
</div>
<!-- The container for the uploaded files -->
<div id="files" class="files"></div>

Код jQuery (upload.php):

<script>    
    $(function () {
        'use strict';
        // Server-side upload handler:
        var url = 'process.php';

        $('#fileupload').fileupload({
            url: url,
            autoUpload: true,
            acceptFileTypes: /(\.|\/)(txt)$/i,
            maxFileSize: 5000000, // 5 MB
            done: function (e, data) {
                $(this).delay(2000, function(){
                    window.location = "explorer.php";
                });
            },
            progressall: function (e, data) {
                var progress = parseInt(data.loaded / data.total * 100, 10);
                $('#progress .progress-bar').css(
                    'width',
                    progress + '%'
                );
            }
        }).prop('disabled', !$.support.fileInput)
            .parent().addClass($.support.fileInput ? undefined : 'disabled');
    });
</script>

PHP upload script (process.php):

<?php
    session_start();

    $folder      = 'upload';

    if (!empty($_FILES))
    {
        // Set temporary name
        $tmp    = $_FILES['files']['tmp_name'];

        // Set target path and file name
        $target = $folder . '/' . $_FILES['files']['name'];

        // Upload file to target folder
        $status = move_uploaded_file($tmp, $target);

        if ($status)
        {
            // Set session with txtfile name
            $_SESSION['txtfile'] = $_FILES['files']['name'];
        }
    }
?>

Желаемый результат:

  • Текстовый файл должен быть загружен в папку /upload - в настоящее время chmod 777
  • Задание имени текстового файла должно быть присвоено переменной $ _SESSION ['txtfile']
  • Перенаправление пользователя после загрузки выполняется в файл "explorer.php"

РЕДАКТИРОВАТЬ: РЕШЕН. Окончательный код выше!

  • 0
    какие-либо сообщения об ошибках? что в настоящее время происходит, когда вы запускаете это?
  • 0
    Нет сообщений об ошибках, но ничего не загружается.
Теги:
file-upload
session

1 ответ

3
Лучший ответ

Для начинающих...

Обратите внимание, что ваше имя input - это files[] и имеет атрибут multiple. Это означает, что вы отправляете массив файлов на сервер, чтобы ссылаться на них в php, вам понадобится что-то вроде этого:

$_FILES['files']['name'][0]

для первого файла.

Кроме того, я обнаружил, что move_uploaded_file() любит полные пути для адресата, попробуйте привязать к $_SERVER['DOCUMENT_ROOT'].

Чтобы отправить информацию обратно в jQuery, вы хотели бы использовать echo json_encode() как...

echo json_encode(array(
    'status' => $status,
    'message' => 'your message here'
));

В вашей done функции доступ к данным можно получить следующим образом:

done: function(e, data){
     console.log(data.status);
     console.log(data.message);
}
  • 0
    Хорошо, это решило проблему с загрузкой. Теперь файл загружен. Но как мне отправить ответ обратно в jQuery, чтобы переместить человека в «explorer.php»?
  • 0
    Вы можете отправить обратно HTML, используйте скрипт для установки window.location, если ваш текущий метод не работает ...
Показать ещё 13 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню