Summernote не загружал файл на сервер и не отображался в редакторе, когда я писал пример кода, что мне делать? - PullRequest
1 голос
/ 04 июня 2019

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

Я попробовал официальное руководство от summernote, а также другое решение для stackoverflow. Если я удаляю обратные вызовы onImageUpload, я получаю изображения в редакторе. И я до сих пор путаюсь с тем, как сделать вставленное изображение отправленным на сервер (я уверен, что оно получит успешный ответ в запросе POST). (Я предпочитаю ответить на чистом PHP о том, как загружать, а не использовать фреймворк).

$(document).ready(function() {
    $('#summernote').summernote({
        height: "300px",
        dialogsInBody: true,
        callbacks: {
            onImageUpload: function(files) {
                console.log("Sending image file");
                uploadFile(files[0]);
            }
        }
    });

    function uploadFile(file) {
        data = new FormData();
        data.append("file", file);

        $.ajax({
            data: data,
            type: "POST",
            url: "http://localhost/ngetest/assets/images/",
            cache: false,
            contentType: false,
            processData: false,
            success: function(url) {
                console.log("image file sent!");
                $('#summernote').summernote("insertImage", url);
            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log(textStatus+" "+errorThrown);
            }

        });
    }
});

Вот разрешение

total 12
drwxrwxrwx 3 root root 4096 Jun  4 23:06 assets
-rw-r--r-- 1 root root 1589 Jun  4 23:41 index.html
-rw-r--r-- 1 root root  498 Jun  4 23:06 test.php

Вот иерархия

.:
assets  index.html  test.php

./assets:
images

./assets/images:

Это весь HTML-файл, кроме скрипта

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css" rel="stylesheet"> 
    <link href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.8/summernote.css" rel="stylesheet">
</head>
<body>
    <div class="form-group">
    <form action="test.php" method="post">
        <label for="summernote"><h1>Content</h1></label>
        <textarea id="summernote" class="summernote" name="contents">
        </textarea>
        <input type="submit" class="btn btn-success"/>
    </form>
    </div>

Ошибка, выдаваемая при наличии ошибки Не найдено при запуске этого кода. И файл отправляется, когда я меняю

http://localhost/ngetest/assets/images/ to http://localhost/ngetest/ 
or 
http://localhost/ngetest/test.php

Я ожидаю, что если метод onImageUpload не удастся, он по-прежнему отображает изображения в редакторе, но это не происходит, и он не попадает в каталог сервера

http://localhost/ngetets/assets/images/

Может немного поздно. Но это содержание test.php

<?php
$allowed = array('png', 'jpg', 'gif');
if (isset($_FILES['file']) && $_FILES['file']['error'] == 0) {
    $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
    if (!in_array(strtolower($extension), $allowed)) {
        echo "AN ERROR OCCURED - INVALID IMAGE";
        exit;
    }
    if (move_uploaded_file($_FILES['file']['tmp_name'], 'assets/images'.$_FILES['file']['name'])) {
        echo 'http://localhost/ngetest/assets/images/'.$_FILES['file']['name'];
        exit;
    }
}
echo 'AN ERROR OCCURED';
exit;
...