2012-02-23 12 views
9

मुझे एक निर्देशिका में एक फ़ाइल एफ़टीपी की आवश्यकता है। .NET में मुझे कनेक्शन बनाने के लिए गंतव्य फ़ोल्डर पर एक फ़ाइल का उपयोग करना है, इसलिए मैं एफ़टीपी का उपयोग कर सर्वर पर मैन्युअल रूप से Blank.dat डालता हूं। मैंने एक्सेस की जांच की (एलएस-एल) और यह -आरडब्ल्यू-आर - आर-- है। लेकिन जब मैं एफ़टीपी फ़ोल्डर से कनेक्ट करने का प्रयास करता हूं तो मुझे मिलता है: "रिमोट सर्वर ने एक त्रुटि लौटा दी: (553) फ़ाइल नाम को" सर्वर से वापस "अनुमति नहीं है। मैंने जो शोध किया है, वह कहता है कि यह अनुमतियों के मुद्दे से हो सकता है लेकिन जैसा कि मैंने कहा है कि मुझे फ़ाइल देखने की अनुमति है और फ़ोल्डर से ls चला सकता है। इस मुद्दे के कारण अन्य कारण क्या हो सकते हैं और फ़ाइल निर्दिष्ट करने के बिना फ़ोल्डर से कनेक्ट करने का कोई तरीका है?एफ़टीपी से कनेक्ट नहीं हो सकता है: (553) फ़ाइल नाम की अनुमति नहीं है

  byte[] buffer; 
      Stream reqStream; 
      FileStream stream; 
      FtpWebResponse response; 
      FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(string.Format("ftp://{0}/{1}", SRV, DIR))); 
      request.Method = WebRequestMethods.Ftp.UploadFile; 
      request.Credentials = new NetworkCredential(UID, PASS); 
      request.UseBinary = true; 
      request.Timeout = 60000 * 2; 
      for (int fl = 0; fl < files.Length; fl++) 
      { 
       request.KeepAlive = (files.Length != fl); 
       stream = File.OpenRead(Path.Combine(dir, files[fl])); 
       reqStream = request.GetRequestStream(); 
       buffer = new byte[4096 * 2]; 
       int nRead = 0; 
       while ((nRead = stream.Read(buffer, 0, buffer.Length)) != 0) 
       { 
        reqStream.Write(buffer, 0, nRead); 
       } 
       stream.Close(); 
       reqStream.Close(); 

       response = (FtpWebResponse)request.GetResponse(); 
       response.Close(); 
      } 
+1

क्या फ़ाइल का फ़ाइल नाम आप भेजना चाहते थे? – BlueM

+0

क्या आपने उस फ़ोल्डर की अनुमतियों को चेक किया था जिसे आप फ़ाइल में रखना चाहते थे? क्या आप उस फ़ोल्डर के मालिक के रूप में जुड़ रहे हैं? –

उत्तर

1

मैं एक समय पहले इस के समान कुछ देखा था, यह पता चला है कि मैं एक आंतरिक आईआईएस एफ़टीपी सर्वर है कि सक्रिय निर्देशिका का उपयोग सुरक्षित था कनेक्ट करने का प्रयास किया गया था हो सकता है।

मेरे नेटवर्क प्रमाण-पत्र में मैं नए नेटवर्क क्रेडेंशियल (@ "डोमेन \ उपयोगकर्ता", "पासवर्ड") का उपयोग कर रहा था; और वह असफल रहा था। नए नेटवर्क क्रेडेंशियल ("उपयोगकर्ता", "पासवर्ड", "डोमेन") पर स्विचिंग; मेरे लिए काम किया

+0

यह एडी का उपयोग नहीं कर रहा है। यह यूनिक्स एफ़टीपी सर्वर पर एक साधारण उपयोगकर्ता नाम और पासवर्ड है। लेकिन किक्स के लिए मैंने डोमेन में प्रवेश करने की कोशिश की और मुझे लॉगऑन त्रुटि मिली, इसलिए यह मुद्दा नहीं है लेकिन इनपुट के लिए धन्यवाद। – NomadicDeveloper

24

हालांकि पुरानी पोस्ट का जवाब देने के लिए सोचा कि यह किसी की मदद कर सकता है।

जब आप अपने FTP URL बनाने आपको लगता है कि प्रवेश के लिए डिफ़ॉल्ट निर्देशिका शामिल नहीं कर रहे यह सुनिश्चित कर लें।

उदाहरण के लिए इस मार्ग जो मैं निर्दिष्ट करने गया था और मैं अपवाद 553 फ़ाइल का नाम अपवाद अनुमति नहीं हो रही थी

ftp://myftpip/gold/central_p2/inbound/article_list/jobs/abc.txt 

लॉगिन जो मैं इस्तेमाल किया/डिफ़ॉल्ट निर्देशिका सोना पड़ा central_p2.so आपूर्ति यूआरएल बन गया अमान्य क्योंकि यह डिफ़ॉल्ट निर्देशिका में पूरे पथ का पता लगाने की कोशिश कर रहा था। मैंने तदनुसार मेरी यूआरएल स्ट्रिंग में संशोधन किया और अपवाद से छुटकारा पाने में सक्षम था।

मेरी संशोधन यूआरएल,

ftp://myftpip/inbound/article_list/jobs/abc.txt 

धन्यवाद की तरह दिखाई देता

सब

+4

पवित्र बकवास! मुझे लगता है कि आप इसके लिए फूल भेजना चाहते हैं! –

+2

बस कुछ जोड़ने के लिए: यदि आप अभी भी एक पूर्ण पथ का उपयोग करना चाहते हैं (मैं इसे पसंद करता हूं, क्योंकि कभी-कभी मैं एक अलग उपयोगकर्ता का उपयोग कर लॉगिन करता हूं और एक सापेक्ष पथ काम नहीं करेगा), तो आप होस्ट के बाद दो "//" डाल सकते हैं। Ftp की तरह: //myftpip//gold/central_p2/inbound/article_list/jobs/abc.txt – YuviDroid

+0

मुझे यह कैसे पता चलेगा कि डिफ़ॉल्ट निर्देशिका कौन सी है? – Steam

6

यह लिनक्स FTP सर्वर के लिए मदद मिल सकती है।

तो, आईआईएस के विपरीत लिनक्स एफ़टीपी सर्वरों में सामान्य एफ़टीपी रूट निर्देशिका नहीं है। इसके बजाय, जब आप किसी उपयोगकर्ता के क्रेडेंशियल के तहत FTP सर्वर पर लॉग ऑन करते हैं, तो इस उपयोगकर्ता की रूट निर्देशिका का उपयोग किया जाता है। तो एफ़टीपी निर्देशिका पदानुक्रम रूट उपयोगकर्ता के लिए/रूट/से/घर/उपयोगकर्ता नाम से दूसरों के लिए शुरू होता है।

तो, आप एक फ़ाइल उपयोगकर्ता खाते होम निर्देशिका के सापेक्ष है, लेकिन रिश्तेदार सिस्टम रूट फाइल नहीं क्वेरी एक अतिरिक्त/के बाद सर्वर नाम जोड़ने की जरूरत है। परिणामी URL दिखेगा की तरह:

ftp://servername.net//var/lalala 
0

आप नाम और रास्तों के साथ सावधान रहना चाहिए:

string FTP_Server = @"ftp://ftp.computersoft.com//JohnSmith/"; 
string myFile="text1.txt"; 
string [email protected]"D:/Texts/Temp/"; 

अगर आप भेज रहे हैं ftp.computersoft.com/JohnSmith के लिए एक फ़ाइल टेक्स्ट 1 caled।txt पर घ स्थित:/ग्रंथों/अस्थायी

तो

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(FTP_Server+myFile); 
    request.Method = WebRequestMethods.Ftp.UploadFile;      

    request.Credentials = new NetworkCredential(FTP_User, FTP_Password);  

    StreamReader sourceStream = new StreamReader(TempDir+myFile);     
    byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
    sourceStream.Close(); 

    Stream requestStream = request.GetRequestStream(); 
    requestStream.Write(fileContents, 0, fileContents.Length);    
    requestStream.Close(); 

सूचना है कि एक पल में आप गंतव्य के रूप में उपयोग

ftp://ftp.computersoft.com//JohnSmith/text1.txt

जो न केवल निर्देशिका में शामिल है लेकिन एफ़टीपी सर्वर पर भी नया फ़ाइल नाम (जो सामान्य रूप से हार्ड ड्राइव पर फ़ाइल के नाम से अलग हो सकता है)

और अन्य जगह आप

डी स्रोत के रूप में उपयोग में: /Texts/Temp/text1.txt

2

अपने निर्देशिका पहुँच सीमा होती है। हालांकि यह एक पुराने पोस्ट मैंने सोचा कि यह मेरे अनुभव साझा करने के लिए अच्छा होगा है

//create folder 
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create("ftp://mpy1.vvs.ir/Subs/sub2"); 
request.Method = WebRequestMethods.Ftp.MakeDirectory; 
request.Credentials = new NetworkCredential(username, password); 
request.UsePassive = true; 
request.UseBinary = true; 
request.KeepAlive = true ; 
using (var resp = (FtpWebResponse)request.GetResponse()) 
{ 

} 
+0

यह सुनिश्चित नहीं है कि क्या गलत था, यह इन सभी दिनों में काम कर रहा था और अचानक 553 त्रुटि हो रही थी, मैंने अभी हटा दिया और फ़ोल्डरों को फिर से बनाया और फिर से काम करना शुरू कर दिया। –

0

:
अपने निर्देशिका हटाकर बाद में इस कोड के साथ फिर से पैदा करते हैं। मुझे एक ही समस्या का सामना करना पड़ा हालांकि मैंने इसे हल किया। इस समस्या का मुख्य 2 कारण पथ में त्रुटि है (यदि आपकी अनुमतियां सही हैं) तब होती है जब आपका FTP पथ गलत होता है। अपना रास्ता देखे बिना यह गलत है कि क्या गलत है लेकिन किसी को चीजों को याद रखना चाहिए a. Unlike browser FTP doesn't accept some special characters like ~ b. If you have several user accounts under same IP, do not include username or the word "home" in path c. Don't forget to include "public_html" in the path (normally you need to access the contents of public_html only) otherwise you may end up in a bottomless pit

0

इस त्रुटि का एक और कारण यह हो सकता है कि FTP सर्वर केस संवेदनशील हो। यह पता लगाने के दौरान मुझे अच्छा लगा।