2017-09-11 9 views
2

사용자가 업로드하는 현재 프로필 사진은/static/avatars/{upload-date}에 저장됩니다. 그런 다음 데이터베이스에 저장된 정보를 통해 이미지의 StaticR 경로를 생성합니다 (런타임에 추가되어 StaticR 경로가 이미 존재하지 않음).Yesod - 사용자 프로필 사진을 정적 디렉토리에 저장해야합니까?

내가 겪어 본 문제는 사용자가 프로필 사진을 업데이트 할 때 정적 파일 캐싱으로 인해 기존 프로필 사진을 계속 가져 오는 문제입니다. 이 주변에 어떤 방법이 있습니까, 아니면 다른 곳에 이미지를 저장해야합니까? 그렇다면 /avatars/{upload-date}/{userid}.png에서 이미지에 액세스하려면 어떻게해야합니까?

/avatars/# Day/# UserId의 행을 따라 경로를 만들 수 있지만 그 대신 ".png"또는 ".jpg"가 어떻게 추가 될지 잘 모르겠습니다. 아니면 내가 처리기 함수에 쓸 것이라고.

+0

지금까지 파일 저장 작업을 수행하는 코드는 무엇입니까? 나는 그것이 도움이 될지도 모른다고 생각합니다. – AJFarmar

+0

@AJFarmar 파일 저장은 몇 가지 기능에 걸쳐 있습니다.보고 싶은 특정 부분이 있습니까/유용하다고 생각합니까? 네가 원한다면 나는 모든 것을 넣을 수 있지만, 내가 먼저 물어볼 줄 알았다. –

답변

2

은 내가/아바타/# 데이/# 사용자 ID의 라인을 따라 경로를 만들 수 있습니다 알고 있지만 나는

를 토륨에 추가 된 ".PNG"또는 ".JPG"를 얻을 것입니다 방법을 모르겠어요

URL이 png 또는 jpeg 확장자가 될 필요는 없습니다. 콘텐츠 유형 헤더가 올바르게 설정되어 있어야합니다.

또는 처리기 함수로 무엇을 쓸지 결정합니다.

매우 간단합니다. 업로드의 타임 스탬프를 저장하고에 따라 URL을 변경해야합니다, 또한

myAvatarHandler = sendFile typePng "/home/yesod/static/avatars/day/userid.png" 

를 귀하의 예제에서 : 당신이 png 이미지를 제공하는 경우에, 당신이해야 할 sendFiletypePng 그들을 제공하는 기능을 사용할 수 있습니다 그. 아니면 같은 날 업데이트 된 두 개의 프로필 이미지가 캐싱됩니다.

+0

답장을 보내 주셔서 감사합니다. 내가 처리기 기능을 사용하는 방법에 대해 다소 혼란 스러워요. 언제 이미지 태그의 소스로 사용하고 싶습니다. 아바타를위한 새로운 경로를 만들어야합니까? 당신의 대답에서 경로가 여전히 정적 인 것으로 나타났습니다. StaticR을 사용하여 이미지를 정적으로 제공하는 방법이 이미 있었지만 사용자가 새로운 이미지를 업로드했을 때 문제가 캐싱되는 문제가있었습니다. 파일 시스템의 파일이 업데이트 되었더라도 대답에 동일한 문제가 발생하지 않습니까? –

+0

@JamesBurton 제 대답에 표시된 것처럼 이미지의 타임 스탬프를 저장하는 것이 좋습니다 (오늘의 부분). 그렇게하면 사진 업로드에 대한 고유 URL을 얻을 수 있습니다. – Sibi

+0

자, 이전에했던 것처럼 StaticR 라우트를 생성하는 대신 사용자가 응답자를 처리해야하는 이유가 있습니까? –