NGINX에서 파일 EXIF ​​데이터 가져오기

NGINX에서 파일 EXIF ​​데이터 가져오기

다음 코드에서는 이미지에 대한 정보(제목, URL 등)가 포함된 일부 변수를 설정합니다.

location /photo {
    ssi on;
    ssi_last_modified on;
    set $photosrc /photos/$request_basename;
    set $phototitle $request_basename;
    ...
}

페이지에 사진 생성 날짜를 표시하고 싶습니다. 이상적으로는 다른 변수에 있어야 합니다...:

   ...
   set $photodate $???;
   ...

그러나 AFAICT에는 NGINX에 마지막 수정 날짜를 포함하는 변수가 없습니다. 변수 인덱스를 살펴봤지만 아무 것도 찾을 수 없습니다. Nginx는 수정된 날짜를 헤더에 자동으로 추가하므로 Last-Modified이를 수행할 수 있어야 합니다. 나는 또한 사용해 보았지만 ssi_last_modified일부 답변에 따르면 NGINX는 전체 SSI를 구현하지 않았기 때문에 작동하지 않습니다.

답변1

파일 수정 시간은 사진 생성 날짜와 동일하지 않습니다.

mtime이 EXIF ​​데이터와 일치하도록 하고 이를 실제로 보고하려는 데이터의 프록시로 사용하는 것은 간단할 수 있지만 잠재적으로 유용할 수 있는 파일에 포함될 수 있는 다른 데이터가 있습니다. 이것은 XY 문제처럼 들립니다.

호스트에 애플리케이션 서버 기능이 아직 없다고 가정하면 이 문제를 해결하기 위해 이를 추가하는 것은 과도한 것처럼 보입니다(그리고 많은 강화 문제가 발생하게 됩니다). 따라서 저라면 문서 루트 내부에 기계가 읽을 수 있는 형식으로 데이터를 덤프하는 크롤러를 작성했을 것입니다.

#!/bin/bash

if [ ! -f /var/run/lastexif ] ; then
   touch -t 198012250200 /var/run/lastexif
fi
mv -f /var/run/lastexif /var/run/lastexif.old
touch /var/run/lastexif
find /var/www/html/photo -type f -newer /var/run/lastexif.old | dump_exif_data

dump_exif_data그런게 어디 있나요....

#!/bin/bash

while read fname
do
  if [ -n "$fname" -a -f "$fname" ] ; then
     exiftool "$fname" | tr -s ' ' > "${fname}.exif"
  fi
done

페이지에 Ajax 마법을 뿌리고 크론 작업(또는 인크론 작업)을 추가하여 스크립트를 실행하면 작업이 완료됩니다.

관련 정보