Cara mengekstrak Hanya nama file dari permintaan uri


11

Saya mencoba menulis ulang permintaan uri tergantung pada ekstensi file, kemudian ekstrak hanya nama file dari uri dan simpan di folder lain. Masalahnya di sini adalah tidak ada variabel standar untuk nama file dan variabel yang tersedia uri, request_uridan request_filenameakan memberikan uri penuh.

server{

        set $file_folder D:/nginx-1.0.15/imageAll/;  

        location ~*+.(gif|jpg)$ { 
            try_files $uri @imgstore;
        }

        location @imgstore { 
            proxy_pass $file_folder$request_filename;
            proxy_store on;
            proxy_temp_path /nginx-1.0.15/images/;
            proxy_store_access  user:rw  group:rw  all:r;
       }
}

yang terbaik yang bisa saya lakukan adalah mendapatkan .jpg ekstensi atau .gif, bahwa ketika saya meletakkan $1di tempat $request_filenameseperti ini:

location @imgstore { 
    proxy_pass $file_folder$1;
}

Jadi, saya ingin tahu:

  1. Bagaimana cara mendapatkan nama file dari permintaan?
  2. Apakah ini cara yang tepat untuk menyimpan gambar dari folder ke folder lain?

Jawaban:


17

Apakah Anda ingin nama file dari permintaan asli, atau dari uri saat ini (setelah pengalihan internal)? Keduanya mungkin menggunakan modul peta :

# Gets the basename of the original request
map $request_uri $request_basename {
    ~/(?<captured_request_basename>[^/?]*)(?:\?|$) $captured_request_basename;
}

# Gets the basename of the current uri
map $uri $basename {
    ~/(?<captured_basename>[^/]*)$ $captured_basename;
}

Kemudian gunakan saja $ request_basename atau $ basename di mana pun Anda membutuhkannya. Perhatikan bahwa peta harus didefinisikan dalam konteks http {}, menjadikannya saudara kandung server {} s.


Saya Ingin nama file dari uri saat ini, saya tidak berpikir modul peta bisa memberikan itu tetapi saya akan mencobanya,
Johnta

Saya mengujinya secara lokal sebelum memposting, dan peta kedua itu berfungsi (selama Anda menggunakan 0.9.6+)
kolbyjack

Terima kasih Kolbyjack, trik hebat yang berhasil, saya mendapatkan nama file dan ekstensi.
Johnta
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.