Загрузка крошечного изображения MCE с локальной MVC ошибка 500 - PullRequest
0 голосов
/ 06 августа 2020

У меня проблема с загрузкой изображения в TinyMce.

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

Это это часть моего маршрутизатора:

case 'upload':
        // This calls the controller who is in charge of the image upload (like the postacceptor.php in the tiny doc)
        $UploadController = new UploadController();
        $UploadController->imageUpload();
        break;

    default:
        // This shows the homepage
        $HomeController = new HomeController();
        $HomeController->HomeDisplay();
        break;

Это мой контроллер:

<?php
namespace App\back_office\Controllers;

class UploadController
{
    function imageUpload()
    {
        // Allowed origins to upload images
        $accepted_origins = array("http://localhost", "http://localhost888/");
// Images upload path
        $imageFolder = "/";

        reset($_FILES);
        $temp = current($_FILES);
        if(is_uploaded_file($temp['tmp_name'])){
            if(isset($_SERVER['HTTP_ORIGIN'])) {
                // Same-origin requests won't set an origin. If the origin is set, it must be valid.
                if(in_array($_SERVER['HTTP_ORIGIN'], $accepted_origins)){
                    header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
                }else{
                    header("HTTP/1.1 403 Origin Denied");
                    return;
                }
            }

            // Sanitize input
            if (preg_match("/([^\w\s\d\-_~,;:\[\]\(\).])|([\.]{2,})/", $temp['name'])) {
                header("HTTP/1.1 400 Invalid file name.");
                return;
            }

            // Verify extension
            if (!in_array(strtolower(pathinfo($temp['name'], PATHINFO_EXTENSION)), array("gif", "jpg", "png"))) {
                header("HTTP/1.1 400 Invalid extension.");
                return;
            }

            // Accept upload if there was no origin, or if it is an accepted origin
            $filetowrite = $imageFolder . $temp['name'];
            move_uploaded_file($temp['tmp_name'], $filetowrite);

            // Respond to the successful upload with JSON.
            // Use a location key to specify the path to the saved image resource.
            // { location : '/your/uploaded/image/file'}
            echo json_encode(array('location' => $filetowrite));
        } else {
            // Notify editor that the upload failed
            header("HTTP/1.1 500 Server Error");
        }

    }    
}

и это крошечная функция инициализации:

 tinymce.init({
    selector: 'textarea.editor',
    document_base_url : "http:localhost8888/myWebsite,
    relative_urls : false,
    remove_script_host : false,
    convert_urls : false,
    plugins: 'image code',
    toolbar: 'undo redo | image code',

    // without images_upload_url set, Upload tab won't show up
    images_upload_url: 'upload',

    // override default upload handler to simulate successful upload
    images_upload_handler: function (blobInfo, success, failure) {
        var xhr, formData;

        xhr = new XMLHttpRequest();
        xhr.withCredentials = false;
        xhr.open('POST', 'upload');

        xhr.onload = function() {
            var json;

            if (xhr.status != 200) {
                failure('HTTP Error: ' + xhr.status);
                return;
            }

            json = JSON.parse(xhr.responseText);

            if (!json || typeof json.location != 'string') {
                failure('Invalid JSON: ' + xhr.responseText);
                return;
            }

            success(json.location);
        };

        formData = new FormData();
        formData.append('file', blobInfo.blob(), blobInfo.filename());
        xhr.send(formData);
    },
});

Когда я пытаюсь чтобы загрузить изображение, у меня есть эта ошибка:

"GET http://localhost:8888/myWebsite/public/upload/?route=upload 500 (Server Error)"

и на вкладке сети я вижу это:

Notice: Trying to access array offset on value of type bool in /Users/pietrociccarello/Desktop/projet5/myWebsite/src/back_office/Controllers/UploadController.php on line 15

Я также использую .htaccess и вызываю страницы как это

http://localhost: 8888 / myWebsite / home

или

http://localhost: 8888 / myWebsite / projects.

Я пробовал разные способы и видел учебник по различиям, но не нашел решения.

Кто-нибудь может мне помочь, пожалуйста?

Извините за длинный пост , впервые задаю здесь вопрос :)

Заранее благодарю

...