অনুরোধ ইউরি থেকে কেবল ফাইলের নাম কীভাবে নিষ্কাশন করা যায়


11

আমি ফাইলের প্রসারের উপর নির্ভর করে অনুরোধটি ইউআরিকে পুনরায় লেখার চেষ্টা করছি, তারপরে কেবল ইউরি থেকে ফাইলের নামটি বের করুন এবং এটি অন্য ফোল্ডারে সঞ্চয় করুন। সমস্যা এখানে কোন পূর্বনির্ধারিত হয় ফাইলের নাম এবং উপলব্ধ ভেরিয়েবলের জন্য পরিবর্তনশীল uri, request_uriএবং request_filenameপূর্ণ URI দেব।

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;
       }
}

আমি যা করতে পারি তা হ'ল এক্সটেনশন .jpg বা .gif অর্জন করা, যখন আমি $1এর $request_filenameমতো জায়গায় রাখি :

location @imgstore { 
    proxy_pass $file_folder$1;
}

সুতরাং, আমি জানতে চাই:

  1. অনুরোধ থেকে ফাইলের নাম কীভাবে পাবেন?
  2. ফোল্ডার থেকে অন্যটিতে চিত্র সংরক্ষণের এটি কি সঠিক উপায়?

উত্তর:


17

আপনি কি ফাইলের নামটি মূল অনুরোধ থেকে, বা বর্তমান ইউরি (কোনও অভ্যন্তরীণ পুনঃনির্দেশের পরে) থেকে চান? তারা উভয়ই মানচিত্রের মডিউলটি ব্যবহার করে সম্ভব :

# 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;
}

তারপরে আপনার প্রয়োজন যেখানেই কেবল $ অনুরোধ_বাসনেম বা $ বেস নাম ব্যবহার করুন। দ্রষ্টব্য যে মানচিত্রগুলি অবশ্যই সার্ভারের ভাইবোনদের তৈরি করে http {} প্রসঙ্গে নির্ধারণ করা উচিত।


আমি বর্তমান ইউরির থেকে ফাইলের নাম চাই, আমি মনে করি না মানচিত্রের মডিউলটি এটি দিতে পারে তবে আমি এটি চেষ্টা করব,
Johnta

পোস্ট করার আগে আমি স্থানীয়ভাবে এটি পরীক্ষা করেছি এবং এটি দ্বিতীয় মানচিত্রটি কাজ করবে (যতক্ষণ আপনি 0.9.6+ ব্যবহার করছেন)
কলবিজ্যাক

আপনাকে ধন্যবাদ কলবিজ্যাক, দুর্দান্ত কৌশলটি এটি কাজ করেছে, আমি ফাইলটির নাম এবং এক্সটেনশন পেয়েছি।
জনতা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.