在 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 魔法,添加一個 cron 作業(或 incron 作業)來運行腳本並完成工作。

相關內容