• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

image

20.03.15 01:07 작성 조회수 281

0

마지막 질문이 될거 같아요. ㅎㅎ

지금 이미지 업로드는 되는데 불러오기 안되서... 어떤 경우 일까요?

(일시적으로 크롬웹은 되는데, 휴대폰 웹으로는 안되고,,, 이후에 파일 권한이나 권한이름도 바꿨더니 또 안됩니다 ㅠ)

참고 파일 입니다.

답변 7

·

답변을 작성해보세요.

1

개foot님의 프로필

개foot

질문자

2020.03.15

혹시나 맞을까 싶어서 고민 중이었는데, 속 시원하게 해결 해 주셔서 감사합니다.

질문도 많았는데, 자세하게 알려 주셔서 감사합니다. 프로젝트를 한번 끝낼 수 있어서도 좋았네요. 

이제 반복만이 살길 인거 같아요 !!

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

개foot님의 프로필

개foot

질문자

2020.03.18

/image?path?=이미지이름으로 요청하니 이렇게 외계어가 뜨는게 맞나요?.

매번 답변 감사드립니다!!

0

읽어오질 못한다는 것은 에디터에 업로드를 하고서 발생하는 HTTP Response Code 를 확인해보세요. (Get Request) 400 이거나 404 라면 못 불러옵니다. 이는 getImage 함수를 눈여겨 볼 필요가 있고, /image 라우트에 대해 테스트해볼 필요가 있습니다.

0

개foot님의 프로필

개foot

질문자

2020.03.18

다시한번 하다가 업로드를 할때 이미지를 옮길때는 네트워크로 받기는 하는데요.

읽어 오질 않습니다. (글 작성시에도 그렇습니다.)