উত্তর:
জনগণের আসল পথটি পেতে আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন: //।
if ($wrapper = file_stream_wrapper_get_instance_by_uri('public://')) {
$realpath = $wrapper->realpath();
// ...
}
এই কোডটি file_create_url()
নিম্নলিখিত পার্থক্য সহ কোডটি ব্যবহার করা কোডটির সরলিকৃত সংস্করণ :
$wrapper->getExternalUrl()
ওপি ইউআরএল জন্য নয়, পথ জিজ্ঞাসা করছে বলে এটি কল করে নাযদি ওপি জনসাধারণের জন্য ইউআরএল চাইত: //, আমি নিম্নলিখিত কোডটি ব্যবহার করতাম, এটি এখনও দ্রুপাল ফাংশন দ্বারা ব্যবহৃত কোডটির একটি সরলিকৃত সংস্করণ, যা আরও জেনেরিক হওয়া দরকার।
if ($wrapper = file_stream_wrapper_get_instance_by_uri('public://')) {
$url = $wrapper->getExternalUrl();
}
file_create_url()
; আপনি মৃত্যুদণ্ডপ্রাপ্ত কোডটি দেখতে পাবেন, এই ক্ষেত্রে, আমি আমার উত্তরে যা লিখেছিলাম তা হ'ল।
file_create_url()
দেয় যা আপনাকে দেয়।
/var/www/webroot/etc/more_folders/
আপনি file_create_url ফাংশনটি ব্যবহার করতে পারেন ।
$uri = 'public://';
$path= file_create_url($uri)
global $base_url
এটিকে সরাতে এবং এই সার্ভারটি অজ্ঞেয় তৈরি করতে একটি সাধারণ রেইজেক্স এবং এটি ব্যবহার করেছি । global $base_url; $path = file_create_url($file_object->uri); $path = preg_replace('#' . $base_url . '#', '', $path);
'রেগেক্সে' # ব্যবহার করার বিষয়টি নিশ্চিত করুন, নইলে $ বেস_আরএল-এ-পালানো '/' এর কারণে প্রতিস্থাপনটি ব্যর্থ হবে।
আপনি যদি কেবল স্থানীয় ফাইল ( রিমোট নয়! ) ব্যবহার করেন তবে আপনি drupal_relpath () ব্যবহার করে দেখতে পারেন
$path = 'public://custom_map';
drupal_realpath($path);
এটি ফিরে আসবে:
D:\Work\OpenServer\domains\local.testsite.com\sites\default\files\custom_map
নিম্নলিখিত উদাহরণগুলি দেখুন:
$scheme = file_uri_scheme($file);
if ($scheme && file_stream_wrapper_valid_scheme($scheme)) {
$wrapper = file_stream_wrapper_get_instance_by_scheme($scheme);
$path = $wrapper->getLocalPath($file);
}
বা:
$wrapper = file_stream_wrapper_get_instance_by_uri($uri);
$path = $wrapper->getDirectoryPath() . "/" . file_uri_target($uri);
print $path;
এর জন্য এপিআই পরীক্ষা করুন DrupalPublicStreamWrapper
।
ব্যবহার file_create_url()
সমস্ত ক্ষেত্রে কাজ করে না (যেমন অন্যান্য উত্তরগুলি বোঝায়), কারণ ফেরত ইউআরএল একই সার্ভারে থাকা উচিত নয়। এবং $_SERVER['DOCUMENT_ROOT']
শুধুমাত্র নির্দিষ্ট সার্ভার কনফিগারেশনের জন্য কাজ করে ।
আপনি যদি স্ট্রিম মোড়ক ব্যবহার করতে না চান তবে আপনি সহজ সমাধান চেষ্টা করতে পারেন:
$path = variable_get('file_public_path', conf_path() . '/files') . '/' . file_uri_target($uri);
অন্যথায় আপনার যদি এমন কিছু প্রয়োজন হয় যা আরও সাধারণভাবে কাজ করে তবে @ হান্নান এক্সপ্লোর সমাধানটি দেখুন:
$wrapper = file_stream_wrapper_get_instance_by_uri($uri);
if ($wrapper instanceof DrupalLocalStreamWrapper) {
$path = $wrapper->getDirectoryPath() . '/' . file_uri_target($uri);
}
else {
// This does not appear to be a local file so there's no such thing as
// a relative path; do appropriate error handling here.
}
আরও পড়ুন: আমি কীভাবে কোনও ফাইল ইউরিকে আপেক্ষিক পথে রূপান্তর করতে পারি?
সম্পর্কিত: