2010-07-14 21 views
6

मुझे उपयोगकर्ता को अपने ऐप से जेपीईजी फ़ाइल डाउनलोड करने की आवश्यकता है, हालांकि, जब उपयोगकर्ता फ़ाइल नाम बदलता है तो सहेजी गई फाइल एक्सटेंशन के बिना डाउनलोड की जाएगी।फ़ाइल रिफरेंस डाउनलोड करते समय विस्तार खोना

उदाहरण के लिए: मैं FileReference.download() का उपयोग कर रहा हूं और डिफ़ॉल्ट फ़ाइल नाम "demoPic.jpg" के रूप में सेट करता हूं और उपयोगकर्ता की विंडोज सिस्टम सेटिंग नियंत्रण फ़ाइल एक्सटेंशन नहीं दिखाया जा रहा है। तो जब संवाद एक डाउनलोड विंडो खुलता है, केवल फ़ाइल नाम के रूप में दिखाया गया "डेमोपिक"। यदि उपयोगकर्ता फ़ाइल नाम बदलने के बिना फ़ाइल सहेजा गया है, तो सहेजी गई फ़ाइल ठीक रहेगी। लेकिन यदि उपयोगकर्ता फ़ाइल नाम बदलता है, तो डाउनलोड फ़ाइल एक्सटेंशन के बिना सहेजी जाएगी। क्या उपयोगकर्ता फ़ाइल को फ़ाइल एक्सटेंशन में जोड़ना संभव है जब उपयोगकर्ता इसे फ्लेक्स कोड से भूल जाता है?

उत्तर

1

मुझे एक ही समस्या है और अब तक इसे ठीक करने में सक्षम नहीं था। ऐसा लगता है कि यह फ्लैश + विंडोज़ के साथ एक समस्या है। :(खेद सूचित करने के लिए, लेकिन मैं, किसी भी ठीक नहीं मिला था।

इस एक समाधान कहा जा सकता है, तो उन चेतावनी दी है और उनसे भी विस्तार जगह जब वे फ़ाइल का नाम बदलने के लिए किसी भी तरह है।

+0

आपके उत्तर, Pirvulescu के लिए धन्यवाद पकड़ कर सकते हैं। मैं क्या कर सकता हूं यहां एक चेक जोड़ रहा है, और विस्तार से उपयोगकर्ता फ़ाइल को इनपुट करने के लिए चेतावनी देता है। मैं एक और अधिक आरामदायक तरीका ढूंढ रहा हूं जो स्वचालित रूप से फ़ाइल एक्सटेंशन जोड़ रहा है।क्या कोई सुझाव दे सकता है कि यह कैसे किया जा सकता है? – xuchen

1

ही था समस्या। मैन्युअल रूप से विस्तार जोड़ने के लिए प्रयुक्त CONCAT। यह सहेजते समय संवाद बॉक्स में प्रकट नहीं होता है लेकिन विंडोज एक्सप्लोरर में देखे जाने पर .txt एक्सटेंशन के साथ टेक्स्ट फ़ाइल के रूप में सहेजता है। काम नहीं लगता है लेकिन वास्तव में करता है!

var final_filename:String = filename.concat(".txt"); 

// टेक्स्ट फ़ील्ड से बचाने के लिए टेक्स्ट बनाएं var newDataFile: TextField = new TextField(); newDataFile.text = myTextField.text; // फ़ाइल var फ़ाइल को सहेजने के लिए फ़ाइल संदर्भ बनाएं: फ़ाइल संदर्भ = नया फ़ाइल संदर्भ(); file.save (newDataFile.text, final_filename);

2

यह फ़्लैश प्लेयर के साथ एक ज्ञात समस्या है। एडोब के साथ एक वृद्धि अनुरोध दायर किया गया है। कृपया इसके लिए जाएं और वोट वोट: https://bugs.adobe.com/jira/browse/FP-2014

उपयोगकर्ताओं को प्रशिक्षित करने के लिए व्यावहारिक प्रतीत नहीं होता है कि फ़ाइल का नाम बदलने के लिए नहीं। यहां मेरे ऐप के लिए उपयोग किए जाने वाले वर्कअराउंड है:

  • समस्या केवल ActiveX प्लगइन के साथ विंडोज पर होती है। Capabilities.playerType के साथ ActiveX का पता लगाएं (मेरे अनुभव में केवल 25% उपयोगकर्ताओं)

  • यदि ActiveX प्लगइन, तो अपने सर्वर पर फ़ाइल को उछालने के लिए 'navigateToURL()' पर वापस आते हैं। इस फ़ंक्शन का उपयोग FileReference.download() से कम वांछनीय है क्योंकि यह कम नियंत्रण योग्य है (ब्राउज़र आपके ऐप के बजाए प्रभारी है), लेकिन इसके परिणामस्वरूप एक सहेजें संवाद बॉक्स होता है जहां उपयोगकर्ता सुरक्षित रूप से फ़ाइल का नाम बदल सकता है।

1

तुम सिर्फ navigateToUrl (उर)

var ur:URLRequest=new URLRequest(); 
var fr:FileReference=new FileReference(); 
fr.download(ur,<FILENAME>); 

"डाउनलोड" विधि कॉल मानते हुये उपयोग करना और फिर सर्वलेट कॉल करने के लिए की जरूरत है। तो फ्लेक्स फाइल एक्सटेंशन

लेकिन "navigateToUrl" सर्वलेट कहा जाता है पहले तो फोन मानते हुये सर्वलेट को नहीं पकड़ सकते तो एचटीएमएल फाइल एक्सटेंशन

0
protected function downloadImage():void 
      { 
       loadImage(); 
      }  
public function loadImage():void 
       { 
        var NowDate:Date=new Date(); 
        var dateStr:String=String(NowDate.date)+'-'+String(NowDate.month)+'-'+ 
         String(NowDate.fullYear)+' '+String(NowDate.hours)+'-'+String(NowDate.minutes)+'-'+String(NowDate.seconds); 
        var file:File= File.desktopDirectory.resolvePath('image_'+dateStr);; 
        file.addEventListener(Event.SELECT,onSelect); 
        file.browseForSave("Save image"); 

       } 
       public var filePath:String=''; 
       public var fileName:String=''; 
       public function onSelect(event:Event):void 
       { 
        var loader:Loader = new Loader(); 
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadcompleteHandler); 
        loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioError); 
        loader.load(new URLRequest(img_path)); 
        fileName=event.target.name; 
        filePath=event.target.url; 
       } 
       private var _bitmapData:BitmapData; 
       public function loadcompleteHandler(event:Event):void 
       { 
        var loaderInfo:LoaderInfo = event.target as LoaderInfo; 
        var bitmap:Bitmap = loaderInfo.content as Bitmap; 
        _bitmapData = bitmap.bitmapData; 
        var imgByteArray:ByteArray; 
        var jpegEncoder:JPEGEncoder = new JPEGEncoder(80); 
        imgByteArray = jpegEncoder.encode(_bitmapData); 
        var file:File = new File(filePath+'.jpg'); 
        var fileStream:FileStream = new FileStream(); 
        fileStream.open(file, FileMode.WRITE); 
        fileStream.writeBytes(imgByteArray); 
        fileStream.close(); 
        pop.status_text("Photo Downloaded Successfully",1); 
       } 
संबंधित मुद्दे