해결된 질문
작성
·
421
0
마지막 질문이 될거 같아요. ㅎㅎ
지금 이미지 업로드는 되는데 불러오기 안되서... 어떤 경우 일까요?
(일시적으로 크롬웹은 되는데, 휴대폰 웹으로는 안되고,,, 이후에 파일 권한이나 권한이름도 바꿨더니 또 안됩니다 ㅠ)
참고 파일 입니다.
답변 7
1
혹시나 맞을까 싶어서 고민 중이었는데, 속 시원하게 해결 해 주셔서 감사합니다.
질문도 많았는데, 자세하게 알려 주셔서 감사합니다. 프로젝트를 한번 끝낼 수 있어서도 좋았네요.
이제 반복만이 살길 인거 같아요 !!
1
일부 잘못 된 처리 있을 수 있습니다. middlewares/auth.php 에서 image 부분을 날리십시오. (로그인을 하지 않은 경우라도 이미지는 불러와야 하나, 못 불러오는 버그가 발견되었음.)
return guard([
'/user/update',
'/post/write',
'/post/update',
'/post/delete'
]) ?: reject("/auth/login");
두 번째는 Content-type 헤더가 MIME 타입을 제대로 설정하고 있는지 점검해보시기 바랍니다. services/image::getImage 함수에서 mime_content_type 함수는 fileinfo 확장을 필요로 합니다.
1
음, 대략적으로 점검해볼만한 사항은 아래에서 realpath 가 올바르게 이미지 패치를 보고 있는지 디버깅 해보시고,
function show($path)
{
echo getImage(realpath(config('image.path') . basename($path)));
}
둘째는 services/image::getImage 함수에서 is_readable 로 파일을 읽을 수 있는지 검증해볼 것, 리눅스라면 폴더의 권한 체크는 해볼만 합니다. 그리고 services/image::uploadImage 에서 url 을 올바르게 리턴하는 지, 다 되었다면 웹브라우저를 켜고 /image?path=__이미지_이름__ 을 넣어서 검증해보시면 되겠습니다.
function getImage($path)
{
var_dump(is_readable($path));
if (file_exists($path)) {
header("Content-type:" . mime_content_type($path));
return file_get_contents($path);
}
}
0
Header Content-Type (MIME 타입)을 올바르게 설정해주셔야 합니다! fileinfo Extension 에 있는 '그' 함수를 사용해주세요! 간단히 이야기하면 MIME 타입은 응답하고자 하는 파일의 형태를 나타내고, image/png, application/json 등이 있습니다.
0
0
읽어오질 못한다는 것은 에디터에 업로드를 하고서 발생하는 HTTP Response Code 를 확인해보세요. (Get Request) 400 이거나 404 라면 못 불러옵니다. 이는 getImage 함수를 눈여겨 볼 필요가 있고, /image 라우트에 대해 테스트해볼 필요가 있습니다.
0