Работает ли скрипт jquery-file-upload с БД? - PullRequest
0 голосов
/ 03 января 2012

Мне бы очень хотелось поменять существующую структуру загрузки файлов на jquery-file-upload , но я не могу найти никаких документов для использования базы данных вместо файловой системы для хранения.

Кто-нибудь знает, возможно ли это, и если да, то где я могу найти документацию или примеры?

Ответы [ 2 ]

3 голосов
/ 03 января 2012

Какую платформу вы используете?

PHP? .СЕТЬ? Рубин

Не зная специфики, давайте рассмотрим пример PHP JQuery в общем, чтобы увидеть, что происходит

https://github.com/blueimp/jQuery-File-Upload/blob/master/php/index.php

Вы видите в этом файле

$upload_handler = new UploadHandler();

header('Pragma: no-cache');
header('Cache-Control: private, no-cache');
header('Content-Disposition: inline; filename="files.json"');
header('X-Content-Type-Options: nosniff');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: OPTIONS, HEAD, GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: X-File-Name, X-File-Type, X-File-Size');

switch ($_SERVER['REQUEST_METHOD']) {
    case 'OPTIONS':
        break;
    case 'HEAD':
    case 'GET':
        $upload_handler->get();
        break;
    case 'POST':
        $upload_handler->post();
        break;
    case 'DELETE':
        $upload_handler->delete();
        break;
    default:
        header('HTTP/1.1 405 Method Not Allowed');
}

Посмотрите на случай 'POST'

Содержит следующее

    $upload_handler->post();

Итак, если файл опубликован, давайте посмотрим на процедуру post [Это просто предназначено для обработки вещей в стиле RESTFul, как кажется ... правильные глаголы, делающие правильные вещи, GET получает файл, Delete delete is file, POST Posts файл.]

Итак, давайте теперь посмотрим на эти следующие важные биты

  public function post() {
        if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
            return $this->delete();
        }
        $upload = isset($_FILES[$this->options['param_name']]) ?
            $_FILES[$this->options['param_name']] : null;
        $info = array();
        if ($upload && is_array($upload['tmp_name'])) {
            foreach ($upload['tmp_name'] as $index => $value) {
                $info[] = $this->handle_file_upload(
                    $upload['tmp_name'][$index],
                    isset($_SERVER['HTTP_X_FILE_NAME']) ?
                        $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
                    isset($_SERVER['HTTP_X_FILE_SIZE']) ?
                        $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
                    isset($_SERVER['HTTP_X_FILE_TYPE']) ?
                        $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
                    $upload['error'][$index]
                );
            }
        } elseif ($upload || isset($_SERVER['HTTP_X_FILE_NAME'])) {
            $info[] = $this->handle_file_upload(
                isset($upload['tmp_name']) ? $upload['tmp_name'] : null,
                isset($_SERVER['HTTP_X_FILE_NAME']) ?
                    $_SERVER['HTTP_X_FILE_NAME'] : (isset($upload['name']) ?
                        isset($upload['name']) : null),
                isset($_SERVER['HTTP_X_FILE_SIZE']) ?
                    $_SERVER['HTTP_X_FILE_SIZE'] : (isset($upload['size']) ?
                        isset($upload['size']) : null),
                isset($_SERVER['HTTP_X_FILE_TYPE']) ?
                    $_SERVER['HTTP_X_FILE_TYPE'] : (isset($upload['type']) ?
                        isset($upload['type']) : null),
                isset($upload['error']) ? $upload['error'] : null
            );
        }

Самая важная часть для вас здесь

$this->handle_file_upload(
                    $upload['tmp_name'][$index],
                    isset($_SERVER['HTTP_X_FILE_NAME']) ?
                        $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
                    isset($_SERVER['HTTP_X_FILE_SIZE']) ?
                        $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
                    isset($_SERVER['HTTP_X_FILE_TYPE']) ?
                        $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
                    $upload['error'][$index]
                );

Это вызывает handle_file_upload. Теперь обратите внимание, как все это работает. Файл загружается, и он определяет, что глагол был, получить, опубликовать, удалить. Ему все равно, есть база данных или нет, важно только, что мне делать дальше. Это цифры, чтобы позвонить по почте Отправьте тогда цифры, эй, мне нужно вызвать handle_file_upload. Теперь handle_file_upload для вас в некотором смысле является черным ящиком, вы можете просто заменить его на другой, который обрабатывает его с помощью некоторой логики базы данных.

Если вы посмотрите на функцию handle_file_upload, вы увидите

приватная функция handle_file_upload ($ uploaded_file, $ name, $ size, $ type, $ error) {

Итак, возьмите эти параметры и используйте их, чтобы сделать запрос к базе данных и таким образом сохранить ваши файлы. В основном просто переписать handle_file_upload

В любом случае, надеюсь, это поможет.

1 голос
/ 03 января 2012

Серверная часть для хранения файла не зависит от проекта загрузки файла jQuery.Вот хороший пример использования PHP для хранения загруженных файлов в базе данных MySQL:

http://www.php -mysql-tutorial.com / wikis / mysql-tutorials / uploading-files-to-mysql-database.aspx

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