ফাইল পাথ সমাধানের সেরা উপায় খুব দীর্ঘ ব্যতিক্রম


109

আমি একটি অ্যাপ তৈরি করেছি যা এসপি সাইটে সমস্ত নথি লাইব্রেরি ডাউনলোড করে, তবে এক পর্যায়ে এটি আমাকে এই ত্রুটি দেয় (আমি গুগলের দিকে তাকানোর চেষ্টা করেছি কিন্তু কিছুই খুঁজে পাচ্ছি না, এখন কেউ যদি এই সমস্যার সমাধানের জন্য কোনও কৌশল জানে তবে দয়া করে অন্যথায় প্রতিক্রিয়া জানান ধন্যবাদ এটি দেখার জন্য)

System.IO.PathTooLongException: নির্দিষ্ট পথ, ফাইলের নাম বা উভয়ই দীর্ঘ long সম্পূর্ণরূপে যোগ্যতাসম্পন্ন ফাইলের নামটি অবশ্যই 260 টির চেয়ে কম বর্ণের হতে হবে এবং ডিরেক্টরিটির নামটি 248 টির চেয়ে কম বর্ণের হতে হবে। System.IO.Pile.NormalizePathFast (স্ট্রিং পাথ, বুলিয়ান ফুলচেক) এ System.IO.Path.GetFullPathIntern (স্ট্রিং পাথ) এ System.IO.FileStream.Init (স্ট্রিং পাথ, ফাইলমোড মোড, ফাইলঅ্যাক্সেস অ্যাক্সেস, ইনট 32 রাইটস, বুলিয়ান ইউজারআরাইটস , ফাইল-শেয়ার ভাগ, Int32 বাফার সাইজ, ফাইলঅ্যাপশন বিকল্পসমূহ, SECURITY_ATTRIBUTES সেক্যাটারস, স্ট্রিং ম্যাসেজপথ, বুলিয়ান bFromProxy) এ System.IO.FileStream..ctor (স্ট্রিং পাথ, ফাইলমোড মোড, ফাইলঅ্যাক্সেস অ্যাক্সেস, ফাইল-শেয়ার শেয়ার, ফাইল-বিকল্পসমূহে ফাইল অপশন) O IO.File.Create (স্ট্রিং পাথ)

এটি স্ট্রিংয়ের সীমাতে পৌঁছেছে, কোড নীচে দেওয়া হয়েছে,

#region Downloading Schemes

    private void btnDownload_Click(object sender, EventArgs e)
    {
        TreeNode currentNode = tvWebs.SelectedNode;
        SPObjectData objectData = (SPObjectData)currentNode.Tag;
        try
        {
            CreateLoggingFile();
            using (SPWeb TopLevelWeb = objectData.Web)
            {
                if(TopLevelWeb != null)
                    dwnEachWeb(TopLevelWeb, TopLevelWeb.Title, tbDirectory.Text);
            }
        }
        catch (Exception ex)
        {
            Trace.WriteLine(string.Format("Exception caught when tried to pass TopLevelWeb:{1}, Title = {2}, object data to (dwnEachWeb_method), Exception: {0}", ex.ToString(), objectData.Web, objectData.Title));
        }
        finally
        {
            CloseLoggingFile();
        }
    }

    private void dwnEachWeb(SPWeb TopLevelWeb, string FolderName, string CurrentDirectory)
    {
        if (TopLevelWeb != null)
        {
            if (TopLevelWeb.Webs != null)
            {
                CurrentDirectory = CurrentDirectory + "\\" + TopLevelWeb.Title;
                CreateFolder(CurrentDirectory);
                foreach (SPWeb ChildWeb in TopLevelWeb.Webs)
                {

                    dwnEachWeb(ChildWeb, ChildWeb.Title, CurrentDirectory);
                    ChildWeb.Dispose();
                }
                dwnEachList(TopLevelWeb, CurrentDirectory);
                //dwnEachList(TopLevelWeb, FolderName, CurrentDirectory);
            }
        }
    }

    private void dwnEachList(SPWeb oWeb, string CurrentDirectory)
    {
        foreach (SPList oList in oWeb.Lists)
        {
            if (oList is SPDocumentLibrary && !oList.Hidden)
            {
                dwnEachFile(oList.RootFolder, CurrentDirectory);
            }
        }
    }

    private void dwnEachFile(SPFolder oFolder, string CurrentDirectory)
    {
        if (oFolder.Files.Count != 0)
        {
            CurrentDirectory = CurrentDirectory + "\\" + oFolder.Name;
            CreateFolder(CurrentDirectory);
            foreach (SPFile ofile in oFolder.Files)
            {
                if (CreateDirectoryStructure(CurrentDirectory, ofile.Url))
                {
                    var filepath = System.IO.Path.Combine(CurrentDirectory, ofile.Url);
                    byte[] binFile = ofile.OpenBinary();
                    System.IO.FileStream fstream = System.IO.File.Create(filepath);
                    fstream.Write(binFile, 0, binFile.Length);
                    fstream.Close();
                }
            }
        }
    }

    //creating directory where files will be download        
    private bool CreateDirectoryStructure(string baseFolder, string filepath)
    {
        if (!Directory.Exists(baseFolder)) return false;

        var paths = filepath.Split('/');

        for (var i = 0; i < paths.Length - 1; i++)
        {
            baseFolder = System.IO.Path.Combine(baseFolder, paths[i]);
            Directory.CreateDirectory(baseFolder);
        }
        return true;
    }

    //creating folders
    private bool CreateFolder(string CurrentDirectory)
    {
        if (!Directory.Exists(CurrentDirectory))
        {
            Directory.CreateDirectory(CurrentDirectory);
        }
        return true;
    }

    //shorting string

    #endregion

1
ইউএনসি (বা যাই হোক না কেন) পাথকে 8.3 ফর্ম্যাটে রূপান্তর করুন। [সিএমডি ব্যবহার করে 8.3 ফর্ম্যাটে রূপান্তর করুন] [1] [1]: স্ট্যাকওভারফ্লো.com
অটোমেশনেশন


সম্ভাব্য সদৃশ। এখানে আমি সমাধানটি stackoverflow.com/a/44211420/5312148
ফ্রান্সেস্কো

উত্তর:


58

ত্রুটির কারণটি স্পষ্টত, এখানে কিছু তথ্য যা আপনাকে সমস্যার সমাধান করতে সহায়তা করবে:

নামকরণ ফাইল, পাথ এবং নেমস্পেস সম্পর্কে এই এমএস নিবন্ধটি দেখুন

লিঙ্কের একটি উদ্ধৃতি এখানে:

উইন্ডোজ এপিআইতে সর্বাধিক পাথ দৈর্ঘ্যের সীমাবদ্ধতা (নিম্নলিখিত অনুচ্ছেদে কিছু ব্যতিক্রম ব্যতীত), কোনও পাথের সর্বাধিক দৈর্ঘ্য MAX_PATH, যা 260 বর্ণ হিসাবে সংজ্ঞায়িত। একটি স্থানীয় পাথ নিম্নলিখিত ক্রমে কাঠামোযুক্ত: ড্রাইভ লেটার, কোলন, ব্যাকস্ল্যাশ, ব্যাকস্ল্যাশ দ্বারা পৃথক করা নাম উপাদান এবং একটি অবসান নাল চরিত্র। উদাহরণস্বরূপ, ড্রাইভ ডি-এর সর্বাধিক পাথ হ'ল "ডি: \ কিছু 256-বর্ণের পাথ স্ট্রিং <NUL>" যেখানে "<NUL>" বর্তমান সিস্টেম কোডকেজের জন্য অদৃশ্য টার্মিনেটিং নাল চরিত্রের প্রতিনিধিত্ব করে। (<< অক্ষরগুলি এখানে ভিজ্যুয়াল স্পষ্টতার জন্য ব্যবহৃত হয় এবং এটি কোনও বৈধ পাথ স্ট্রিংয়ের অংশ হতে পারে না))

এবং কয়েকটি কর্মক্ষেত্র (মন্তব্যগুলি থেকে নেওয়া):

বিভিন্ন সমস্যা সমাধানের উপায় রয়েছে। নীচের তালিকাভুক্ত সমাধানগুলির প্রাথমিক ধারণাটি সর্বদা একই থাকে: থাকার জন্য পথের দৈর্ঘ্য হ্রাস করুন path-length + name-length < MAX_PATH। আপনি:

  • একটি সাবফোল্ডার ভাগ করুন
  • SUBST এর মাধ্যমে ড্রাইভ লেটার নির্ধারণ করতে কমান্ডলাইনটি ব্যবহার করুন
  • কোনও পথে কোনও ড্রাইভ চিঠি নির্ধারণের জন্য ভিবি-র অধীনে অ্যাডকনেকশন ব্যবহার করুন

7
@ টাইমটোথাইন, আমি পোস্ট করা নিবন্ধটি পড়েছেন? আপনি মন্তব্য পড়েন? আমি ভুল হতে পারি, তবে আমি মনে করি না যে আমি ইতিমধ্যে সরবরাহ করা ব্যতীত এসও সম্প্রদায়ের কাছ থেকে আর কোনও সহায়তা পাব।
জেমস হিল

2
হ্যাঁ আমি এখানে ইতিমধ্যে পড়েছি যে আমার প্রশ্ন এখানে পোস্ট করার আগে, আমি এমনকি "\\? \" চেষ্টা করেছি কিন্তু কিছু কারণে এটি এই প্রসঙ্গে কাজ করছে না। আমি এই ব্লগটিটি ব্যবহার করে এটি খুঁজে পেয়েছি তবে কোনও কারণে এটি সঠিকভাবে কাজ করছে না, " কোডিংহরর.com/blog/2006/08/Sortening-long-file-paths.html " আমি এখনও এমন কিছু সন্ধান করছি যা ডিরেক্টরিটি সংরক্ষণ করে এবং আমি পারব সেখান থেকে এটি গ্রহণ করুন বা এর মতো অন্য কিছু, ফোরেক্সাম্পল স্ট্রিংয়ের পরিবর্তে বর্তমান ডিরেক্টরিটি সংরক্ষণ করার জন্য একটি গোপন লেবেল ব্যবহার করে তবে নিশ্চিত না যে এটি কাজ করবে কিনা।
মুহাম্মদ রাজা

24
এটি সুস্পষ্ট তবে এটি কোনও ধারণা রাখে না। পথ-আকারের সীমাবদ্ধতা কেন ??? এটি 2017.
জয়দার

2
আমি যদি ডিরেক্টরিটি ডিরেক্টরী.সেটকারেন্টের ডিরেক্টরী () ব্যবহার করে ফোল্ডারের ডিরেক্টরিতে বর্তমান ডিরেক্টরিটি পরিবর্তন করে থাকি তবে এটি কি এই বিধিনিষেধ এড়ায়? অথবা সমস্যাটি এখনও বিদ্যমান থাকবে।
অ্যাডাম লিন্ডসে

3
নিবন্ধটি আপডেট হয়েছে বলে মনে হচ্ছে: Starting in Windows 10, version 1607, MAX_PATH limitations have been removed from common Win32 file and directory functions. তবে আপনাকে এটি সক্ষম করতে অবশ্যই একটি অনির্বাচন করতে হবে এবং একটি রেজিস্ট্রি কী সেট করতে হবে।
টম দেবলাউয়ে

28

আমার জন্য যে সমাধানটি কাজ করেছিল তা হ'ল দীর্ঘ পথের আচরণ সক্ষম করার জন্য রেজিস্ট্রি কী সম্পাদনা করা, মানটি 1 নির্ধারণ করা This এটি উইন্ডোজ 10 এর জন্য একটি নতুন বিকল্প-বৈশিষ্ট্য

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)

@ জেমস-হিল পোস্ট করা নিবন্ধের একটি নামকৃত অংশ থেকে আমি এই সমাধানটি পেয়েছি।

https://docs.microsoft.com/windows/desktop/FileIO/naming-a-file#maximum-path-length-limitation


2
আমি এই সেটটি 1 এ পেয়েছি এবং এখনও ত্রুটি পেয়েছি, কেন এই মুহুর্তে কোনও ধারণা নেই।
মিঃ ক্রুদ্ধ

নিবন্ধটিতে দুটি প্রয়োজনীয়তার কথা বলা হয়েছে। প্রথমত রেজিস্ট্রি কী এবং দ্বিতীয়ত অ্যাপ্লিকেশন এক্সএমএল: <application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings xmlns:ws2="https://schemas.microsoft.com/SMI/2016/WindowsSettings"> <ws2:longPathAware>true</ws2:longPathAware> </windowsSettings> </application>ভিজ্যুয়াল স্টুডিও 2019 সালে আমার জন্য, ভিজ্যুয়াল স্টুডিও পুনরায় চালু করার পরে এই দ্বিতীয় প্রয়োজনের প্রয়োজন ছিল না।
টম অ্যান্ডারসন

আমি দুঃখিত এটি সম্ভবত বোকা প্রশ্ন কিন্তু "অ্যাপ্লিকেশন এক্সএমএল" কি? এটি ওয়েবকনফিগ বা অন্য কিছু? ওয়েব পেজ এসপ নেট প্রকল্পে আমার এই সমস্যাটি রয়েছে
ওন্দ্র স্টারেনকো

উপরে যেমন বলা হয়েছে, অ্যাপ্লিকেশনের এক্সএমএল পরিবর্তন না করে এটি ভিজ্যুয়াল স্টুডিও 2019 (পুনরায় চালু করার পরে) এ দুর্দান্ত কাজ করে। সমাধানের জন্য ধন্যবাদ।
জোমন

@ টমএন্ডারসন: আমি ভিএস ২০১7 ব্যবহার করছি। আইআই এই অ্যাপ্লিকেশনটি কোথায় খুঁজে পাবে? এক্সএমএল? 1 ম পদক্ষেপটি করার পরেও আমার সমস্যার সমাধান হয় না।
শারদ

23

জেটা লং পাথস নামে একটি লাইব্রেরি রয়েছে যা দীর্ঘ পথের সাথে কাজ করার জন্য একটি নেট নেট সরবরাহ করে।

নেট এবং পাওয়ারশেল উভয়ের জন্যই এই সমস্যাটি অন্তর্ভুক্ত করার জন্য এখানে একটি নিবন্ধ রয়েছে: "। নেট, পাওয়ারশেল পথ খুব দীর্ঘ ব্যতিক্রম এবং একটি। নেট পাওয়ারশেল রবোকপি ক্লোন "


1
এখন এটি কেবল দুর্দান্ত, এবং এটি ব্যবহারের জন্য কোডটি আপডেট করা সত্যিই সহজ। ধন্যবাদ।
আর্থার

3

আপনি একটি সংক্ষিপ্ত ডিরেক্টরি সহ একটি প্রতীকী লিঙ্ক তৈরি করতে পারেন। উদাহরণস্বরূপ প্রথম উন্মুক্ত কমান্ড লাইনটিShift + RightClick আপনার পছন্দসই ফোল্ডারে একটি ছোট পথ দিয়ে (আপনাকে প্রশাসক হিসাবে চালাতে হতে পারে)।

তারপরে আপেক্ষিক বা পরম পাথ দিয়ে টাইপ করুন:

mklink ShortPath\To\YourLinkedSolution C:\Path\To\Your\Solution /D

এবং তারপরে সংক্ষিপ্ত পথ থেকে সমাধান শুরু করুন। এখানে সুবিধাটি হ'ল: আপনাকে কিছু নাড়াতে হবে না।


এটি ভিএস ২০১৫ তে কাজ করে না। এটি উপস্থিত হবে যে ভিএস পথের দৈর্ঘ্যকে বৈধতা দিচ্ছে। VS2015 কাজের আশেপাশের জন্য N-Ate উত্তর দেখুন।
-এ-খেয়েছে

1
আপনি যা করতে পারেন তা হ'ল সমাধান ফোল্ডারে ম্যাপ করা কোনও ড্রাইভারকে "কমান্ড" কমান্ডটি ব্যবহার করে। যা ভিএস ২০১7 এর জন্য কাজ করে।
ফিলিপ ক্যালাসানস

2

উইন্ডোজ 8.1 এ, ব্যবহার করে। নেট 3.5, আমারও একই সমস্যা ছিল।
যদিও আমার ফাইলটির নামটি কেবল 239 অক্ষরের দৈর্ঘ্য ছিল যখন আমি কোনও ফাইল নাম (পাথ ছাড়াই) দিয়ে একটি ফাইলআইএনফো অবজেক্ট ইনস্ট্যান্ট করতে যাই তখন সিস্টেম টাইপ ব্যতিক্রম ঘটে। IO.PathTooLongException

2014-01-22 11:10:35 DEBUG LogicalDOCOutlookAddIn.LogicalDOCAddIn - fileName.Length: 239 
2014-01-22 11:10:35 ERROR LogicalDOCOutlookAddIn.LogicalDOCAddIn - Exception in ImportEmail System.IO.PathTooLongException: Percorso e/o nome di file specificato troppo lungo. Il nome di file completo deve contenere meno di 260 caratteri, mentre il nome di directory deve contenere meno di 248 caratteri.
   in System.IO.Path.NormalizePathFast(String path, Boolean fullCheck)
   in System.IO.FileInfo..ctor(String fileName)
   in LogicalDOCOutlookAddIn.LogicalDOCAddIn.GetTempFilePath(String fileName) in C:\Users\alle\Documents\Visual Studio 2010\Projects\MyAddin1Outlook20072010\MyAddin1Outlook20072010\LogicalDOCAddIn.cs:riga 692
   in LogicalDOCOutlookAddIn.LogicalDOCAddIn.ImportEmail(_MailItem mailItem, OutlookConfigXML configXML, Int64 targetFolderID, String SID) in C:\Users\alle\Documents\Visual Studio 2010\Projects\MyAddin1Outlook20072010\MyAddin1Outlook20072010\LogicalDOCAddIn.cs:riga 857
   in LogicalDOCOutlookAddIn.LogicalDOCAddIn.ImportEmails(Explorers explorers, OutlookConfigXML configXML, Int64 targetFolderID, Boolean suppressResultMB) in C:\Users\alle\Documents\Visual Studio 2010\Projects\MyAddin1Outlook20072010\MyAddin1Outlook20072010\LogicalDOCAddIn.cs:riga 99

আমি ফাইলটির নামটি 204 টি অক্ষরে ছড়িয়ে দেওয়ার সমস্যার সমাধান করেছি (এক্সটেনশন অন্তর্ভুক্ত)।


যে কেউ এটি পড়ে তার জন্য অতিরিক্ত তথ্য - ফাইলের নামগুলি 247 টি অক্ষরে সীমাবদ্ধ থাকে যখন পুরো পথটি 259 এর মধ্যে সীমাবদ্ধ থাকে So সুতরাং আপনার ফাইলের নামটি যদি 239 হয় তবে কেবল বাকী পথের জন্য কেবলমাত্র 20 টি অক্ষর থাকবে (যেমন "সি: \ টেম্প") । আপনি যদি ফাইলের নামটি ছাঁটাই করেন তবে আপনাকে নিশ্চিত করতে হবে যে পুরো পথটি 259 টি অক্ষর বা তারও কম।
লসবার

1

যদি আপনার দীর্ঘ ফাইলের কারণে আপনার বিন ফাইলগুলির সাথে সমস্যা দেখা দেয় তবে ভিজ্যুয়াল স্টুডিও 2015-এ আপনি আপত্তিজনক প্রকল্পের সম্পত্তি পৃষ্ঠাতে যেতে পারেন এবং আপেক্ষিক আউটপুট ডিরেক্টরিটিকে সংক্ষিপ্ত আকারে পরিবর্তন করতে পারেন।

উদাহরণস্বরূপ বিন \ ডিবাগ C সি হয়ে যায় : \ _ বিনগুলি \ মাইপ্রজেক্ট \


1
পুনরায় খোলার পরে যখন আমার বিল্ডটি ব্যর্থ হয় তখন আমি লক্ষ্য করি যে নতুন পথ "সি: \ বনাম \ বিন \ রিলিজ" "" .. \ .. \ .. \ .. \ .. \ .. \ .. \ হিসাবে প্রতিস্থাপিত হয়েছিল \ । \ বনাম \ বিন \ রিলিজ \ " । আমি নিশ্চিত না যে ".. count " চরিত্র গণনায় ফ্যাক্টর হয়েছে কিনা ।
সামিস

2
যে পাথগুলি খুব দীর্ঘ হিসাবে মূল্যায়ন করা হয় সেগুলি হ'ল পরম পথ।
এন-এট

1

আমার জন্য যা কাজ করেছিল তা আমার প্রকল্পটি যেমন ডেস্কটপে ছিল (সি: \ ব্যবহারকারীগণ \ লাচিজার.ল \ ডেস্কটপ \ মাইফোর্ডার) থেকে (সি: \ 0 \ মাইফোর্ডার) যা আপনি দেখতে পাচ্ছেন যে ছোট পথ ব্যবহার করে এটি হ্রাস করার সমাধান করতে পারে সমস্যা।


1

আমার অভিজ্ঞতা থেকে, কোনও জনসাধারণের মুখোমুখি ওয়েব অ্যাপ্লিকেশনগুলির জন্য আমার নীচের উত্তরটির সুপারিশ করবে না।

আপনার যদি আপনার গৃহ সরঞ্জামের জন্য বা পরীক্ষার জন্য এটির প্রয়োজন হয় তবে আমি এটি আপনার নিজের মেশিনে ভাগ করে নেওয়ার পরামর্শ দেব।

-Right click on the root path you need to access
-Choose Properties
-Click on Share button and add your chosen users who can access it

এরপরে এটি shared {PCName} \ {YourSharedRootDirectory like এর মতো একটি ভাগ করা ডিরেক্টরি তৈরি করবে I এটি আপনার সম্পূর্ণ পাথের চেয়ে অবশ্যই কম হতে পারে, আমার জন্য আমি প্রায় 290 টি অক্ষর থেকে 30 টি অক্ষর কমাতে পারি। :)


0

এখনও অবধি এবং একটি আপডেটের উল্লেখ নেই, পাথগুলি পরিচালনা করার জন্য খুব দীর্ঘ একটি গ্রন্থাগার রয়েছে যা খুব দীর্ঘ। আলফাএফএস একটি .NET গ্রন্থাগার যা স্ট্যান্ডার্ড সিস্টেম.আইও ক্লাসের চেয়ে .NET প্ল্যাটফর্মে আরও সম্পূর্ণ Win32 ফাইল সিস্টেমের কার্যকারিতা সরবরাহ করে। স্ট্যান্ডার্ড .NET System.IO এর সর্বাধিক উল্লেখযোগ্য ঘাটতি হ'ল উন্নত এনটিএফএস বৈশিষ্ট্যগুলির সমর্থনের অভাব, বিশেষত প্রসারিত দৈর্ঘ্যের পাথ সমর্থন (যেমন ফাইল / ডিরেক্টরি পাথ 260 অক্ষরের চেয়ে দীর্ঘ)।


0

আমি যে উত্তরটি খুঁজে পেতে পারি তা এখানে দেওয়া মন্তব্যের একটি। উত্তরে এটি যুক্ত করা যাতে কেউ মন্তব্যটি মিস না করে এবং অবশ্যই এটি চেষ্টা করে দেখতে হবে। এটি আমার জন্য বিষয়টি স্থির করেছে।

কমান্ড প্রম্পটে "সাব" কমান্ডটি ব্যবহার করে আমাদের ড্রাইভে সমাধান ফোল্ডারটি ম্যাপ করতে হবে - যেমন, সাব z:

এবং তারপরে সমাধানটি এই ড্রাইভ থেকে খুলুন (এই ক্ষেত্রে z) এটি যথাসম্ভব পথটি ছোট করবে এবং দীর্ঘ ফাইলের সমস্যা সমাধান করতে পারে।


0

এটি সম্ভবত সমাধান হতে পারে some কিছু সময় এমনও হয় যখন আপনি আপনার বিকাশ প্রকল্পকে খুব গভীর রাখেন, এর অর্থ সম্ভবত প্রকল্প ডিরেক্টরিতে অনেকগুলি ডিরেক্টরি থাকতে পারে তাই দয়া করে খুব বেশি ডিরেক্টরিকে এটির ভিতরে একটি সরল ফোল্ডারে রাখবেন না ড্রাইভ। উদাহরণস্বরূপ- যখন আমার প্রকল্পটি এভাবে রাখা হয়েছিল তখন আমিও এই ত্রুটিটি পেয়েছিলাম-

ডি: \ শারদ \ LatestWorkings \ GenericSurveyApplication020120 \ GenericSurveyApplication \ GenericSurveyApplication

তারপরে আমি কেবল আমার প্রকল্পটি ভিতরে tedুকিয়ে দিয়েছি

ডি: \ শারদ \ LatestWorkings \ GenericSurveyApplication

এবং সমস্যা সমাধান করা হয়েছিল।

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