Можно ли визуализировать изображение, хранящееся в laravel хранилище в режиме разработки? - PullRequest
0 голосов
/ 15 марта 2020

Я работаю над веб-приложением, используя React и Laravel, которые находятся в отдельных проектах. Я пытаюсь отобразить изображение, извлеченное из хранилища Laravel, в теге img, используя URL-адрес i ' получаю, например, /storage/file-name.png

это мой метод показа:

  public function show(Patient $patient)
    {
        $this->response = new stdClass();
        ...My code

        $this->response->image =  Storage::url($patient->user->image);

        ...My code
        return response()->json($this->response, $this->successStatus)->header('content-type', 'application/json');
    }

и в моем приложении реакции я передаю URL-адрес компонента, который содержит тег img как реквизит, но ничего не показывает. Я попытался добавить http://localhost:8000 к /storage/file-name.png, и результат тот же.

PS: я консоль зарегистрировал пропу image, и он возвращает /storage/file-name.png, что правильно.

вот мой метод рендеринга компонента dropzone:

render() {
    const { isHighLight } = this.state;
    const { isMultiple, isEnabled, title, image } = this.props;
    return (
      <div
        className={classNames({
          dropzone: true,
          'dropzone--disbaled': !isEnabled,
          'dropzone--highlight': isHighLight
        })}
        role='presentation'
        onClick={this.handleDropzoneClick}
        onDragLeave={this.handleDragLeave}
        onDragOver={this.handleDragOver}
        onDrop={this.handleDrop}
      >
        <img src={image} alt='dropzone' className='dropzone__img' />
        <input ref={this.fileInputRef} type='file' className='dropzone__input' multiple={isMultiple} onChange={this.handleFileUploaded} />
        <span className='dropzone__title'>{title}</span>
      </div>
    );
  }

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

1 Ответ

0 голосов
/ 15 марта 2020

Ваше клиентское приложение не имеет разрешения на просмотр файла в вашем хранилище по умолчанию.

Вы можете попробовать преобразовать файл в base64:

public function getFile(string $name)
{
    if (file_exists("storage/{$name}")) {
        return base64_encode(file_get_contents("storage/{$name}"));
    }
}

front конец:

<img src="data:image/png;base64, base64 code here">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...