2010-10-29 7 views
0

J'ai une fonction de téléchargement que j'ai obtenu de Andy Matthews, et une fonction de carte SD que j'ai obtenu de Christian Cantrell. Maintenant, je dois télécharger sur la carte SD.Comment télécharger sur une carte SD dans AIR

Q: Comment spécifier storage = e.storageVolume.rootDirectory.nativePath?

var remoteFile = 'http://www.CompanyName.com/ClientName.txt'; 

jQuery(function($){ 
    air.StorageVolumeInfo.storageVolumeInfo.addEventListener(air.StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT, onVolumeMount); 
    air.StorageVolumeInfo.storageVolumeInfo.addEventListener(air.StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT, onVolumeUnmount); 

    var PluggedIn = false; 
    var volumes = air.StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); 
    for (var i = 0; i < volumes.length; i++) { 
     if (volumes[i].isRemovable) { 
      if (volumes[i].name == 'COMPANYNAME') { 
       PluggedIn = true; 
       $('#content').append('I see you already have CompanyName plugged in!'); 
       var myNativePath = volumes[i].rootDirectory.nativePath; 
       var storage = 'desktopDirectory'; // myNativePath 
       downloadFile(remoteFile, storage); 
      } else { 
       $('#content').append('What you have plugged in is not CompanyName.'); 
      } 
     } 
    } 
    if (!PluggedIn){ 
     $('#content').append('<h1>Please insert your CompanyName card.</h1>'); 
    } 

}) 

function onVolumeMount(e) { 
    if (e.storageVolume.isRemovable) { 
     $('#content').html('<h1>Thank you</h1>'); 
     if (e.storageVolume.name == 'COMPANYNAME') { 
      var myNativePath = e.storageVolume.rootDirectory.nativePath; 
      var storage = 'desktopDirectory'; // myNativePath 
      downloadFile(remoteFile, storage); 
     } else { 
      $('#content').append('<p>The card you just plugged in is not CompanyName.</p>'); 
     } 
    } else { 
     $('#content').append('<p>This device is not removable</p>'); 
    } 
} 

function onVolumeUnmount(e) { 
    $('#content').html('<h1>Goodbye!</h1>'); 
} 

function downloadFile(remoteFile, storage){ 
    var fn = remoteFile.match(/[a-z0-9-+\._]+?$/i); 
    var myFile = air.File[storage].resolvePath(fn); 
    var myURLStream = new air.URLStream(); 
    myURLStream.addEventListener(air.Event.COMPLETE, function(e){ 
     var myByteArray = new air.ByteArray(); 
     myURLStream.readBytes(myByteArray, 0, myURLStream.bytesAvailable); 
     var myFileStream = new air.FileStream(); 
     myFileStream.openAsync(myFile, air.FileMode.WRITE); 
     myFileStream.writeBytes(myByteArray, 0); 
     myFileStream.close(); 
    }); 
    myURLStream.load(new air.URLRequest(remoteFile)); 
} 
+0

On dirait que je pourrais être en mesure de fournir simplement le nativePath. –

+0

http://help.adobe.com/en_US/air/reference/html/flash/filesystem/File.html dit: Si vous utilisez un chemin natif littéral dans le référencement d'un fichier, il ne fonctionnera que sur une seule plate-forme. Par exemple, l'objet Fichier suivant ne fonctionnera que sous Windows: new air.File ("C: \ Documents and Settings \ joe \ Mes documents \ test.txt") –

Répondre

0
var myFile = new air.File("file:///" + storage).resolvePath(fn); 
+0

http://forums.adobe.com/thread/240134 –

Questions connexes