У меня проблема с загрузкой изображения в 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.
Я пробовал разные способы и видел учебник по различиям, но не нашел решения.
Кто-нибудь может мне помочь, пожалуйста?
Извините за длинный пост , впервые задаю здесь вопрос :)
Заранее благодарю