Laravel - относительный путь в общей папке - PullRequest
0 голосов
/ 11 июня 2018

Я использую редактор tinymce для загрузки изображения на свой сервер, и у меня возникают проблемы с установкой пути.В postAcceptor.php, расположенном в /public, оно будет загружать изображение в папку /articles/assets/images/ внутри /public.

В web.php я использую Route::get('/articles/{id}', function(){...}) для отображения изображения, которое уже было загружено на сервер.Однако изображение указывает на неверный источник, поэтому оно не может отображать изображение.Предполагается, что его источник: -

localhost:8000/articles/assets/images/fragment%20life%20cycle.png

Но на самом деле он указывает на: -

localhost:8000/articles **/articles**/assets/images/fragment%20life%20cycle.png

postAcceptor.php

<?php
  /*******************************************************
   * Only these origins will be allowed to upload images *
   ******************************************************/
  $accepted_origins = array("http://localhost:8000", "http://192.168.1.1", "http://example.com");

  /*********************************************
   * Change this line to set the upload folder *
   *********************************************/
  $today = date("y-m-d");
  $imageFolder = "articles/assets/images/";

  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;
      }
    }

    /*
      If your script needs to receive cookies, set images_upload_credentials : true in
      the configuration and enable the following two headers.
    */
    // header('Access-Control-Allow-Credentials: true');
    // header('P3P: CP="There is no P3P policy."');

    // 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");
  }
?>

Есть ли способ решить эту проблему или какой-либо ключ к абсолютному или относительному пути?

/ publicпапка

Успешная загрузка

/ article / 44 - отображение страницы с изображением

image src

1 Ответ

0 голосов
/ 11 июня 2018

Laravel поставляется с помощниками пути, которые вы можете использовать, чтобы убедиться, что вы всегда получаете правильный путь туда, куда вы хотите, чтобы дела шли.

Попробуйте изменить

$imageFolder = "articles/assets/images/";

на

$imageFolder = public_path("articles/assets/images/");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...