سؤال

وأنا مجرد محاولة لتحميل ملف xml ساحرة يمكن أن تكون أنيويري في الأقراص الصلبة، وهذا هو ما فعلته لتصفح ذلك، ولكن في وقت لاحق عندما أحاول تحميل ملف انها ستبحث فقط في نفس المسار ملف فرنك سويسري

وهنا هو رمز

وحزمة {     استيراد flash.display.Sprite.     flash.events استيراد <م>؛     flash.net استيراد .

public class cargadorXML extends Sprite {


    public var cuadro:Sprite = new Sprite();
    public var file:FileReference;
    public var req:URLRequest;
    public var xml:XML;
    public var xmlLoader:URLLoader = new URLLoader();

    public function cargadorXML() {
        cuadro.graphics.beginFill(0xFF0000);
        cuadro.graphics.drawRoundRect(0,0,100,100,10);
        cuadro.graphics.endFill();
        cuadro.addEventListener(MouseEvent.CLICK,browser);
        addChild(cuadro);

    }
    public function browser(e:Event) {

        file = new FileReference();
        file.addEventListener(Event.SELECT,bien);
        file.browse();

    }
    public function bien(e:Event) {
        xmlLoader.addEventListener(Event.COMPLETE, loadXML);
        req=new URLRequest(file.name);
        xmlLoader.load(req);
    }
    public function loadXML(e:Event) {
        xml=new XML(e.target.data);
        //xml.name=file.name;
        trace(xml);
    }
}

و}

وعندما فتح ملف XML الذي ليس هو نفس الدليل كما فرنك سويسري، مما يعطيني خطأ ملف غير المتحققة. هل هناك أي شيء أستطيع القيام به؟ تسبب على سبيل المثال لملفات MP3 هناك فئة خاصة بالنسبة تحميل الملف، انظر HTTP: / /www.flexiblefactory.co.uk/flexible/؟p=46

وذلك بفضل

هل كانت مفيدة؟

المحلول

ومنذ كنت تحميل ملف xml المحلي، فأنت تريد أن تستخدم FileStream.read () بدلا من URLRequest. لاحظ أيضا أن file.name سيعطي لك فقط اسم الملف، وليس المسار الكامل، لذلك ما عليك تريد القيام به هو:

 public function bien(e:Event) {
    var file:File = File.documentsDirectory.resolvePath(e.target);
    var fileStream:FileStream = new FileStream();
    fileStream.open(file, FileMode.READ);
    var prefsXML:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
    fileStream.close();
}

ويمكنك أن تقرأ الإشارة يقوم FileStream ( HTTP: //livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/filesystem/FileStream.html )، إذا كنت فتح ملف XML كبيرة، وسوف تحتاج لقراءتها بشكل غير متزامن.

نصائح أخرى

لاحظ أن هذا الجواب لا تعمل إلا لتطبيقات AIR!

var cuadro:Sprite = new Sprite();
var file:FileReference;
var xml:XML;

function cargadorXML() {
    cuadro.graphics.beginFill(0xFF0000);
    cuadro.graphics.drawRoundRect(0,0,100,100,10);
    cuadro.graphics.endFill();
    cuadro.addEventListener(MouseEvent.CLICK,browser);
    addChild(cuadro);

}
function browser(e:Event) {

    file = new FileReference();
    file.addEventListener(Event.SELECT,bien);
    file.browse();

}
function bien(e:Event) {
    file.addEventListener(Event.COMPLETE, loadXML);
    file.load();
}
function loadXML(e:Event) {
    xml = new XML(e.target.data);
    trace(xml);
}

cargadorXML();

تحميل ملف XML المحلي. ويمكن أن يساعد شخص ما ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top