2017-12-17 4 views
1

このスニペットでクラウドストレージから表示ファイルは、私は必要なものだけのようだ:Laravel:ブラウザLaravelのドキュメント、<a href="https://laravel.com/docs/5.5/responses#file-responses" rel="nofollow noreferrer">https://laravel.com/docs/5.5/responses#file-responses</a>から

return response()->file($pathToFile); 

問題は、私のファイルは、S3のディスク上に格納されていることで、私はそれを適切に参照することはできません。

Storage::disk('s3')->getDriver()->getAdapter()->applyPathPrefix($myPath);を使用して完全修飾ファイル名を取得しようとしました。それはちょうど$myPathの値を返しました。

URLを取得しようとしましたStorage::disk('s3')->url($myPath); URLはうまく見えますが、Symphonyには存在しません。ただし、Storage::disk('s3')->exists($myPath);で確認すると、trueが返されます。

クラウドストレージからユーザーのブラウザに直接ファイルを表示するにはどうすればよいですか?

編集:私は$map->storeAs('/my/path/maps/filename.pdf', ['disk' => 's3']);

  • 私はカット - ときurl()の出力は "https://s3.ap-southeast-2.amazonaws.com/my.domain.com/my/path/maps/filename.pdf"
  • あるを使用しています最初のインスタンス内の項目を保存するには

    • :以下

      詳細ブラウザのアドレスバーにURLを入力しても問題ありません。

    • response()->file() URLパラメータを受け入れません。それは事実ですか?

    質問 - ファイルを一般公開する必要がありますか? (現在のところ、私はそれを非公開にしたいと思っています)。

  • 答えて

    1

    以下は十分なはずです:

    $path = Storage::disk('s3')->url($filename); 
    

    私はセットアップ作業例を持っていないが、メモリ$filenameからあなたは、もともと->put()方法に置かれたものと同じである必要があります。だからあなたの質問に$mypathと言うと、うまくいけば、まだあなたのs3インスタンスのようなものにプレフィックスがついていないのです。

    これが当てはまらない場合は、質問を編集して->url()の結果と、put()呼び出しと$ pathの例を含めることができます。編集を見てみると

    が、私はここで解決されていた、私はあなたがやろうとしているかを理解思う:

    https://laracasts.com/discuss/channels/laravel/file-response-from-s3

    +0

    あなたの第2のドットポイント、「URLの出力()は、」正しく見えます。あなたはどのようにurl()の出力を使用していますか?あなたは何を返すと思いますか? – Chris

    関連する問題

     関連する問題