не удалось загрузить изображение на локальный сервер с помощью froala

Я работаю над веб-сайтом с помощью codeigniter и пытаюсь использовать редактор Froala для загрузки изображения в текстовую область. все работает нормально, пока я не попытаюсь загрузить файлы изображений в свою локальную папку вместо используемой по умолчанию http://i.froala.com/upload

это мой html файл:

<textarea id="my_editor" name="my_editor" class="editor">
</textarea>
<script>
  $(function() {
    $('.editor').froalaEditor({
      imageUploadURL: "test/froala_upload",
    })
  });
</script>

и это функция froala_upload в моем файле контроллера Test:

function froala_upload() {

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

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

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

    // Generate new random name.
    $name = sha1(microtime()) . "." . $extension;

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

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

Я намеренно пропустил проверку изображения с помощью finfo, которая используется в большей части документации по загрузке изображений Froala, потому что некоторые люди говорят, что это может быть проблемой, но я все еще не могу загрузить файл изображения. и сообщение об ошибке было очень полезным: "Что-то пошло не так. Пожалуйста, попробуйте еще раз"

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


person dapidmini    schedule 18.05.2016    source источник


Ответы (2)


В соответствии с их документацией вы должны использовать этот код

<script>
  $(function() {
    $('.selector').froalaEditor({
      // Set the image upload URL.
      imageUploadURL: '/your_upload_image_script.php',

      imageUploadParams: {
        id: 'my_editor'
      }
    })
  });
</script>

Затем вам нужно создать файл с именем your_upload_image_script.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));
    }
?>
person Amit Ray    schedule 18.05.2016
comment
Комментарий передан как ответ от Сина Мераджиян Я пробовал ваш способ, но он выдает эту ошибку, что-то пошло не так. попробуйте еще раз. - person Petter Friberg; 06.10.2016
comment
у меня та же проблема, и я использую точно такой же код, когда пытаюсь вернуть $_FILES; я получаю пустой массив !! - person Youssef Boudaya; 19.09.2019
comment
Можете ли вы сделать var_dump($_FILES) и вставить результат сюда? - person Amit Ray; 20.09.2019
comment
результат: массив (0) {} - person Youssef Boudaya; 07.10.2019

Вероятно, отсутствует значение extension.

Попробуйте следующее

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES["file"]["tmp_name"]);

$extension = end($temp);
if ($extension == "") {
    list($dummy, $extenstion) = explode("/", $mime);
}
person Yong Kim    schedule 16.04.2017