JavaScript не может загрузить изображение на локальный сервер с редактором Froala

Я пытаюсь загрузить изображения с помощью редактора Froala wysiwyg на мой локальный хост (в целях тестирования), но он не работает. Когда я выбираю изображение для загрузки, оно появляется в редакторе блеклым, а затем исчезает, когда я нажимаю в другом месте. Вот мой код ниже и ссылка на их документацию, которой я тоже пытался следовать.

Документация:
https://www.froala.com/wysiwyg-editor/docs/concepts/image/upload

Есть также этот метод, но я не уверен, где поставить php: https://www.froala.com/wysiwyg-editor/docs/sdks/php/image-server-upload

МОЙ КОД

(«Федит» — это класс, который я использую для своей текстовой области.)

Javascript:

<script>
$(function() {
$('.fedit').froalaEditor({
// Set the image upload parameter.
imageUploadParam: 'file',

// Set the image upload URL.
imageUploadURL: '/upload_image.php',

// Additional upload params.
imageUploadParams: {class: 'fedit'},

// Set request type.
imageUploadMethod: 'POST',

// Set max image size to 5MB.
imageMaxSize: 5 * 1024 * 1024,

// Allow to upload PNG and JPG.
imageAllowedTypes: ['jpeg', 'jpg', 'png']
})
.on('froalaEditor.image.beforeUpload', function (e, editor, images) {
// Return false if you want to stop the image upload.
})
.on('froalaEditor.image.uploaded', function (e, editor, response) {
// Image was uploaded to the server.
})
.on('froalaEditor.image.inserted', function (e, editor, $img, response) {
// Image was inserted in the editor.
})
.on('froalaEditor.image.replaced', function (e, editor, $img, response) {
// Image was replaced in the editor.
})
.on('froalaEditor.image.error', function (e, editor, error, response) {
// Bad link.
else if (error.code == 1) { ... }

// No link in upload response.
else if (error.code == 2) { ... }

// Error during image upload.
else if (error.code == 3) { ... }

// Parsing response failed.
else if (error.code == 4) { ... }

// Image too text-large.
else if (error.code == 5) { ... }

// Invalid image type.
else if (error.code == 6) { ... }

// Image can be uploaded only to same domain in IE 8 and IE 9.
else if (error.code == 7) { ... }

// Response contains the original server response to the request if available.
});
});
</script>

upload_image.php

<?php
// Allowed extentions.
$allowedExts = array("gif", "jpeg", "jpg", "png", "blob");

// Get filename.
$temp = explode(".", $_FILES["file"]["name"]);

// Get extension.
$extension = end($temp);

// An image check is being done in the editor but it is best to
// check that again on the server side.
// Do not use $_FILES["file"]["type"] as it can be easily forged.
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES["file"]["tmp_name"]);

if ((($mime == "image/gif")
|| ($mime == "image/jpeg")
|| ($mime == "image/pjpeg")
|| ($mime == "image/x-png")
|| ($mime == "image/png"))
&& in_array(strtolower($extension), $allowedExts)) {
// Generate new random name.
$name = sha1(microtime()) . "." . $extension;

// Save file in the uploads folder.
move_uploaded_file($_FILES["file"]["tmp_name"], getcwd() . "/uploads/ " . $name);

// Generate response.
$response = new StdClass;
$response->link = "/uploads/" . $name;
echo stripslashes(json_encode($response));
}
?>

0

Решение

Вот решение, чтобы заставить его работать на вашем локальном хосте, используя SDK для php. (Я использую WAMP). Спасибо cmorrissey в комментариях выше, что заставил меня заглянуть в SDK.

Загрузите файлы SDK здесь:
https://www.froala.com/wysiwyg-editor/docs/sdks/php

Следуйте этим инструкциям:
https://www.froala.com/wysiwyg-editor/docs/sdks/php/image-server-upload

Но я покажу вам код и упомяну несколько моментов, которые были проблемой для меня.

Поместите этот javascript внизу страницы, где находится текстовая область:

<script>
$(function() {
$('.selector').froalaEditor({
// Set the image upload URL.
imageUploadURL: '/mywebsite/upload_image.php'
})
});
</script>

Обратите внимание, что ваш путь imageUploadURL: (upload_image.php) указывает на корень вашего локального сервера. Например. где бы «HTTP: // локальный«указывает на. Таким образом, в моем случае мой сайт находился в подпапке корня, поэтому я бы поместил» /mywebsite/upload_image.php «(который на самом деле находится в C: \ wamp64 \ www \ mywebsite).

В файле upload_image.php:

<?php

// Include the editor SDK.
require 'froala/sdk/lib/FroalaEditor.php';

// Store the image.
try {
$response = FroalaEditor_Image::upload('/mywebsite/img/uploads/');
echo stripslashes(json_encode($response));
}
catch (Exception $e) {
http_response_code(404);
}

?>

Как видите, я скопировал папку sdk «lib» (вы скачали выше) в созданную мной подпапку «froala / sdk /». Вы можете положить его где угодно.

Другая важная заметка — опечатка, которую они сделали. В своем примере php-кода они сообщают вам, что файл называется «froala_editor.php», тогда как в загруженных файлах он называется «FroalaEditor.php». Это была одна из проблем, которые у меня были.

Все должно работать сейчас. Вам просто нужно изменить пути, когда вы загрузите его на свой веб-сервер.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]