2017-12-16 15 views
0

Laravel에서 이미지를 검색하고 컨트롤러에서 해당 이미지를 사용할 수없는 문제가 있습니다.Laravel 저장소에서 이미지를 검색하고 스트림을 열지 못했습니다. 해당 파일이나 디렉터리가 없습니다.

처음 이미지가 사실

var_dump(storage::disk('local')->exists('image.png')) 

내가이

$file = Storage::disk('local')->get('image.png'); 
var_dump(pathinfo($file)); 

내가이 출력을 얻을 할 경우

array(2) { 
    ["basename"]=> 
    string(0) "" 
    ["filename"]=> 
    string(0) "" 
} 

만의 위해 var_dump() ING를 반환하는 존재 있는지 확인하십시오 $file는 나에게 빈 문자열을 제공합니다

내가이

$file = Storage::disk('local')->url('image.png'); 
var_dump(pathinfo($file)); 

난 내가 속성을 알고 싶지 않아

array(4) { 
    ["dirname"]=> 
    string(8) "/storage" 
    ["basename"]=> 
    string(9) "image.png" 
    ["extension"]=> 
    string(3) "png" 
    ["filename"]=> 
    string(5) "image" 
} 

취득 할 경우 10

, 나는 실제 이미지를 저장 것을 수 사용하고 다른 API에 업로드해야합니다. 나는 시도하고

echo '<img src="'.$file.'">'; 

을 할 경우

난 브라우저 소스에서이를 얻을 수 있지만, 모든 이미지

<img src="/storage/image.png"> 

i는 이미지가 다시 업로드하기 위해 사용하고 API를 볼 수없는이

실제 이미지를 얻을 수있게되면 확신합니다. 나머지는 작동합니다.

편집 :이 명령을 실행했습니다

php artisan storage:link

내가 $file = public_path('uploads/image.png');를 사용하여 공용 폴더에 파일을 복사하는 경우 (하지 스토리지/응용 프로그램/공공), 나는 이미지를 사용할 수 있어요 어떻게해야합니까?

이미지를 공개적으로 액세스하기를 원하지 않기 때문에 이상적이지 않습니다. 저장 폴더에서 이미지에 액세스 할 수 있어야합니다. 내가 $file = Storage::disk('public')->get('image.jpg');을 실행하면

나는 내가 사용하는 데 필요한 API에 이미지의 경로를 보내려고 순발력 끝에 mime_content_type(): Invalid path

난을 얻을. 가 필요한 모든 웹 서버의 문서/웹 루트 인 공용 디렉토리, 외부 이미지

답변

0

에게 /storage 폴더를 얻으려고 할 때 내가 403에 결과를 시도했습니다 /the/path/to/the/image

기타 코드입니다. 일반인은 /storage 폴더에 액세스 할 수 없습니다. 이미지 콘텐츠를 출력하려면 응답해야합니다.

$path = storage_path() . "/app/image.png"; 
$file = File::get($path); 
$type = File::mimeType($path); 
$response = Response::make($file, 200); 
$response->header("Content-Type", $type); 
return $response; 
+0

이제 파일은 경로/var/www/vhosts/mysite에 존재하지 않습니다.com/httpdocs/storage/image.jpg' – AdRock

+0

은 앱 폴더 '$ path = storage_path()'에 저장 될 수 있습니다. "/app/image.png";'다음을 확인하십시오 : https://laravel.com/docs/5.5/filesystem#the-local-driver – Ben