2009-11-05 13 views
0

Salut maintenant j'ai trouvé comment donner un chemin relatif dans le paramètre URLRequest et télécharger ce fichier. Je l'ai trouvé de this particular stack overflow post. Merci à Christian Nunciato et heri0n. Donc maintenant si si donne le chemin relatif de ma machine, C:/sample/DefectList.xls cela fonctionne. Maintenant, je dois accéder à un fichier xls conservé dans le serveur ou sur toute autre machine, dit la machine de mon coéquipier. L'adresse IP est 172.17.196.124 et l'emplacement est C:/sample/test.xls.Comment spécifier l'emplacement du fichier d'un ordinateur distant dans le paramètre URLRequest? - Édité

J'ai essayé
var request:URLRequest = new URLRequest"file://172.17.196.124/c:/sample/test.xls"); Mais il jette l'erreur # 2032. Comment indiquer un emplacement distant comme chemin relatif?

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="loadFile()"> 

<mx:Script> 
    <![CDATA[ 

      private var loadedFile:ByteArray; 

      private function loadFile():void 
      { 
        //var request:URLRequest = new URLRequest("C:/sample/DefectList.xls"); 
        var request:URLRequest = new URLRequest("file://172.17.196.124/c:/sample/test.xls"); 

        var urlLoader:URLLoader = new URLLoader(request); 

        urlLoader.addEventListener(Event.COMPLETE, onURLLoaderComplete); 
        urlLoader.dataFormat = URLLoaderDataFormat.BINARY; 
        urlLoader.load(request); 
      } 

      private function onURLLoaderComplete(event:Event):void 
      { 
        loadedFile = event.target.data; 
      } 

      private function saveLoadedFile():void 
      { 
        var file:FileReference = new FileReference(); 
        file.save(loadedFile); 
      } 

    ]]> 
    </mx:Script> 

    <mx:Button label="Save File" horizontalCenter="0" verticalCenter="0" click="saveLoadedFile()" /> 

</mx:Application> 

Répondre

0

Vous ne pouvez pas télécharger quelque chose directement à partir de flex sur le bureau de l'utilisateur. Vous devez le faire depuis le serveur. Pour lancer le téléchargement d'un fichier à partir du serveur, utilisez la méthode FileReference.download(). Le téléchargement n'aura lieu qu'avec le consentement de l'utilisateur - si l'utilisateur clique sur annuler dans la fenêtre d'invite de téléchargement, il sera annulé.

downloadURL = new URLRequest(); 
downloadURL.url = filename_relative_to_swf_location; 
file = new FileReference(); 
file.addEventListener(Event.COMPLETE, completeHandler); 
file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
file.download(downloadURL, fileName); 
private function completeHandler(event:Event):void 
{ 
    trace("completeHandler: " + event); 
} 
private function ioErrorHandler(event:IOErrorEvent):void 
{ 
    trace("ioErrorHandler: " + event); 
} 
+0

, mon problème est que si je dois utiliser la méthode URLRequest, je dois utiliser http ou https pour l'URL. Mais j'ai le fichier à télécharger à partir d'un système de fichiers local, qui n'a que le chemin relatif, comme C:/Documents/... etc. Donc je ne peux pas utiliser URLRequest. Si j'utilise URLLoader, je peux obtenir le contenu en indiquant le chemin relatif dans URLRequest. Maintenant, je dois enregistrer le contenu en tant que fichier. J'ai édité ma question pour tenir une partie de mon code – Angeline

+0

Permettez-moi d'obtenir ceci directement: Vous voulez charger un fichier du bureau de l'utilisateur et le télécharger à l'utilisateur (probablement après avoir modifié)? – Amarghosh

+0

Non, en fait, je veux télécharger le fichier d'une machine serveur à ma machine locale. Mais je n'aurais que le chemin relatif de l'emplacement du fichier dans le serveur. J'ai modifié ma question d'une meilleure manière.Veuillez voir que .. – Angeline

0

Si vous essayez de créer une application qui fonctionne avec les fichiers locaux, vous devriez probablement créer un projet AIR plutôt qu'un web Flex un, car il vous donne des outils pour travailler avec des fichiers. Les fichiers locaux ne fonctionneront que si vous ouvrez le swf compilé à partir de votre disque dur. La politique de sécurité interdira à tout swf flexible d'accéder facilement à vos fichiers locaux si le swf est chargé à partir d'un serveur Web.

Quelques vidéos qui pourraient être utiles:

bien
* Comparing Flash, Flex, Flash Player and Adobe AIR (5:30) 
* Exercise 13: Creating and deploying an AIR application 

sur Flex in a Week