2017-12-05 10 views
16

से विशेष चरित्र के साथ फ़ाइल डाउनलोड करने में असमर्थ मैं अमेज़ॅन एस 3 से एक फ़ाइल डाउनलोड करने का प्रयास कर रहा हूं जो विशेष चरित्र के साथ समाप्त होता है। enter image description hereअमेज़ॅन एस 3

फ़ाइल नाम बेस 64 एन्कोडिंग के परिणामस्वरूप "=" के साथ समाप्त होता है। अब मैं इस फ़ाइल को डाउनलोड करने की कोशिश कर रहा हूं और मुझे एक त्रुटि मिली है,

निर्दिष्ट कुंजी मौजूद नहीं है। (सेवा: अमेज़न S3, स्थिति कोड: 404, त्रुटि कोड:। NoSuchKey;

enter image description here

मैं यूआरएल की कोशिश की स्ट्रिंग एन्कोडिंग तो अब "=" "% 3 डी" हो जाता है और फिर भी मैं ही प्राप्त त्रुटि। लेकिन अगर मैं फ़ाइल नाम से "=" को हटा देता हूं, तो मैं बिना किसी समस्या के फ़ाइल डाउनलोड कर रहा हूं। लेकिन यह एक आम फाइल है और इसे आईओएस भी एक्सेस किया जाना है।

नोट: आईओएस अमेज़ॅन एसडीके तब भी काम करता है जब फ़ाइल नाम में "=" होता है। समस्या केवल एंड्रॉइड एसडीके में सामना की जाती है।

+0

कृपया अपनी पोस्ट संपादित करें। यदि यह फ़ाइल नाम के बारे में है तो हर जगह फ़ाइल नाम का उपयोग करें। विषय से शुरू करना – greenapps

+0

फ़ाइल नामों में ":" का उपयोग करके मुझे एक ही समस्या थी, कुंजी नामों को परिभाषित करने के लिए सर्वोत्तम प्रथाओं की जांच करें। – Jorgesys

+2

क्या आप जिस कोड का इस्तेमाल किया है उसे पोस्ट कर सकते हैं? मैं एडब्ल्यूएस जावा एसडीके (एंड्रॉइड के बिना) का उपयोग करके जांचता हूं और यह मेरे लिए '= 'प्रतीक के साथ भी ठीक काम करता है –

उत्तर

-1

एक प्रमुख नाम में निम्नलिखित वर्णों को अतिरिक्त कोड हैंडलिंग की आवश्यकता हो सकती है और संभवतः हेक्स के रूप में संदर्भित यूआरएल एन्कोड किया जाना चाहिए।

इनमें से कुछ प्रिंट न हो सकने चरित्र और अपने ब्राउज़र उन्हें संभाल नहीं कर सकते हैं, जो भी विशेष हैंडलिंग की आवश्यकता होगी:

enter image description here

सर्वोत्तम प्रथाओं

कुंजी को परिभाषित अनुप्रयोगों के बीच संगतता सुनिश्चित करने के नाम उपयोग कर रहे हैं:

- Alphanumeric characters [0-9a-zA-Z] 
- Special characters !, -, _, ., *, ', (, and) 

एंड्रॉइड का उपयोग करके आपको एन्कोड करने की आवश्यकता है ई फ़ाइल नाम, चरित्र (आमतौर पर ऑपरेटर के रूप में प्रयोग किया जाता):

= 

रहे हैं:

%3D 
+0

मैंने पहले ही अपने प्रश्न में इसका उल्लेख किया है। मैंने "=" से "% 3 डी" एन्कोडिंग यूआरएल की कोशिश की। लेकिन फिर भी मैं फ़ाइल डाउनलोड करने में सक्षम नहीं हूं। मुझे केवल "निर्दिष्ट कुंजी मौजूद नहीं है" –

-1

अनुसार सुरक्षित वर्ण

निम्नलिखित वर्ण सेट कर रहे हैं करने के लिए AWS documentation

आमतौर पर मुख्य नामों में उपयोग के लिए सुरक्षित:

अल्फान्यूमेरिक वर्ण [0-9 ए-जेए-जेड]

विशेष वर्ण!, -, _,।, *, ', (और)

और

अक्षर हैं जो विशेष हैंडलिंग की आवश्यकता हो सकती

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

एंपरसैंड ("&")

डॉलर ("$")

ASCII वर्ण पर्वतमाला 00-1F हेक्स (0-31 दशमलव) और 7F (127 दशमलव।)

प्रतीक 'पर' ("@")

बराबर ("=")

01,235,

अर्द्धविराम (",")

कोलोन (":")

प्लस ("+")

स्पेस - रिक्त स्थान के महत्वपूर्ण दृश्यों कुछ का उपयोग करता है (विशेष रूप से कई रिक्त स्थान) में खो दिया जा सकता

कॉमा (",")

प्रश्न चिह्न ("?")

तो यह आप पुष्टि की है कि "=" विशेष हैंडलिंग, यह बेहतर होगा यदि आप समस्या से बचने के लिए एक और सुरक्षित चार के साथ पिछले "=" चार की जगह की आवश्यकता होती है ...

"परिवर्तित करने का प्रयास करें = "से" & # 61 "


iOS पर हैं, वहाँ कोई समस्या नहीं है, मैं उम्मीद यह एंड्रॉयड पर्यावरण के सापेक्ष हो सकता है।

आप ध्यान दें कि कुछ वर्णों को भी प्रतिबंधित किया जा सकता है क्योंकि एसएच या बीएएसएच या एंड्रॉइड शैल पर्यावरण निष्पादन, कृपया यह भी ध्यान में रखना चाहिए कि कुछ डिस्क प्रारूप विकल्प (सामान्य एंड्रॉइड बाहरी मेमोरी कार्ड पर FAT32) भी प्रतिनिधित्व कर सकता है एक कारक जो फ़ाइल नाम में कुछ char को मना करता है।

तो आप एक बार देख here लेने के लिए और अधिक विशेष रूप से @kreker जवाब पर:

विकि के अनुसार और यह सोचते हैं कि आप जो FAT32 है बाह्य डेटा संग्रहण का उपयोग कर रहे हैं।

Allowable characters in directory entries 

Any byte except for values 0-31, 127 (DEL) and: " */: < > ? \ | + , . ; = [] (lowcase a-z are stored as A-Z). With VFAT LFN any Unicode except NUL 

हैं आप देखेंगे कि = एंड्रॉयड FAT32 विभाजन पर एक की अनुमति दी चार नहीं है ...

जैसा कि मैंने उम्मीद करते हैं कि एंड्रॉयड पर विचार करेंगे = प्रतिबंधित चार के रूप में आप इसे \= से बचने का प्रयास कर सकते हैं या अपने कोड पर फ़ाइल नाम पर एक उद्धरण जोड़ सकते हैं ...

एक प्रति के साथ एक उदाहरण:

cp filename=.png mynewfile=.png #before 


cp "filename=.png" "mynewfile=.png" #after 

"VCS ... = png।"

इस चाल का कुछ भी नहीं आप "=" जब आप बनाते हैं उन दूर करने के लिए फ़ाइल नाम बदलने के लिए काम करेंगे, तो फ़ाइलें।

सम्मान

+0

बचने के लिए अपना दृष्टिकोण = = 61 के रूप में प्रयास किया। काम नहीं किया। –

+0

यहां एक नज़र डालें, FAT32 पर apparentrly "=" char की अनुमति नहीं है, https://stackoverflow.com/questions/2679699/what-characters-allowed-in-file-names-on-android –