Flash 是否可以使用AdobeAIR下载和保存文件?
我为android制作了一个flash air应用程序,我需要下载文件并保存到应用程序本地目录Flash 是否可以使用AdobeAIR下载和保存文件?,flash,air,download,directory,local,Flash,Air,Download,Directory,Local,我为android制作了一个flash air应用程序,我需要下载文件并保存到应用程序本地目录 提前感谢….URLRequest和URLLoader将允许您从internet获取一些数据,FileStream允许您将其保存在本地(如果您希望他们选择保存位置,请使用FileReference),如中所示 我在上面的代码中包含了这两个选项,您可能希望取出文件引用部分或取出文件流部分,否则将保存两次 我刚刚添加了移动部分,实际上它确实有一些对话框,它会提示您在Android上保存文件,尽管这是一个我以
提前感谢….URLRequest和URLLoader将允许您从internet获取一些数据,FileStream允许您将其保存在本地(如果您希望他们选择保存位置,请使用FileReference),如中所示 我在上面的代码中包含了这两个选项,您可能希望取出文件引用部分或取出文件流部分,否则将保存两次
我刚刚添加了移动部分,实际上它确实有一些对话框,它会提示您在Android上保存文件,尽管这是一个我以前从未见过的对话框,它只是让您可以选择在何处保存文件,以及音频文件、图像文件和视频文件作为选项或默认位置/mnt/sdcard/test.swf。我让它保存在那里,并且可以使用ES Explorer查看它(尽管我没有很好的方法来验证数据是否正确,但它通常看起来是正确的)。使用applicationDirectory的那一个在我身上失败了,我发现没有本地路径,所以我把它切换到了applicationStorageDirectory,它有一个值,并且似乎保存得没有错误,不幸的是,它在我的根目录/数据文件夹中,由于我的手机没有根目录,我无法完全确认文件是否确实存在,但没有错误。如果您已经尝试过,请告诉我您还遇到了哪些具体问题。URLRequest和URLLoader将允许您从internet获取一些数据,FileStream允许您将其保存在本地(如果您希望他们选择保存位置,请使用FileReference),如中所示 我在上面的代码中包含了这两个选项,您可能希望取出文件引用部分或取出文件流部分,否则将保存两次
我刚刚添加了移动部分,实际上它确实有一些对话框,它会提示您在Android上保存文件,尽管这是一个我以前从未见过的对话框,它只是让您可以选择在何处保存文件,以及音频文件、图像文件和视频文件作为选项或默认位置/mnt/sdcard/test.swf。我让它保存在那里,并且可以使用ES Explorer查看它(尽管我没有很好的方法来验证数据是否正确,但它通常看起来是正确的)。使用applicationDirectory的那一个在我身上失败了,我发现没有本地路径,所以我把它切换到了applicationStorageDirectory,它有一个值,并且似乎保存得没有错误,不幸的是,它在我的根目录/数据文件夹中,由于我的手机没有根目录,我无法完全确认文件是否确实存在,但没有错误。让我知道您是否尝试过此方法,以及您仍然遇到的具体问题。谢谢您的帮助,但我正在使用此flash代码。我已尽一切努力制作了适合flash的代码,但没有成功。如果您知道如何制作适合flash的代码,请帮助..嘿,Pabo,除了作为容器的应用程序和使用CreationComplete事件之外,我不认为我真的需要依赖Flex中的任何东西来工作,它应该都可以在Flash中使用。。。我会做一个flash mobile项目,然后把它扔进去看看有没有问题,我唯一能想到的可能是使用文件引用,因为我不知道它在移动平台上是如何工作的,通常,它会请求一个特定于操作系统的弹出窗口来选择要保存的文件或位置,但我知道在Android或iOS上没有内置的文件系统浏览器。我更新了答案,另外要注意的是,我在创建项目时选中了“允许写入外部存储”,以便将其添加到-app.xml文件中,并最终添加到设备上安装的apk中。shaunhusain,非常感谢您的帮助。您的代码在我的android手机上运行正常。但问题是,我正在制作一个杂志应用程序,当人们点击“更新”按钮时,图像需要自动下载,而不需要询问文件需要保存的位置。你的代码很好,我还不能做这么多,但问题是我不想要文件需要保存的对话框。如果你知道如何保存,请帮助。非常感谢您的帮助。如果您删除了FileReference部分,用户将不会收到提示,那么下一步是确定如何将文件保存到您要保存的位置,您是将其直接保存到图片文件夹还是其他位置,基本上您可以使用FileStream在不提示用户的情况下保存到任何位置,但是,您只需要弄清楚如何使用文件类静态属性(最有可能)获得该路径。那么,你想把数据保存到哪个文件夹中呢?谢谢你的帮助,但我正在使用这个flash代码。我已经做了所有的事情来制作适合flash的代码,但没有成功。如果你知道如何制作适合flash的代码,请帮帮忙..嘿,Pabo,除了作为容器的应用程序和使用CreationComplete事件之外,我不认为我真的需要依赖Flex中的任何东西来工作,它应该都可以在Flash中使用。。。我会做一个flash mobile项目,然后把它扔进去看看有没有问题,我唯一能想到的可能是使用文件引用,因为我不知道它在移动平台上是如何工作的,通常,它会请求一个特定于操作系统的弹出窗口来选择要保存的文件或位置,但我知道在Android或iOS上没有内置的文件系统浏览器。我更新了答案,另外要注意的是,我在创建项目时选中了“允许写入外部存储”,以便将其添加到-app.xml文件中,并最终添加到设备上安装的apk中。shaunhusain,非常感谢您的帮助。您的代码在我的android手机上运行正常。但问题是,我正在制作一个杂志应用程序,当人们点击“更新”按钮时,图像需要自动下载,而不需要询问文件需要保存的位置。你的代码很棒,我还不能做这么多,但有个问题
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="windowedapplication1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
{
// TODO Auto-generated method stub
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, complete_handler);
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load(new URLRequest("http://www.shaunhusain.com/CheckboxList/CheckboxList.swf"));
}
private function complete_handler(event:Event):void
{
var data:ByteArray = event.target.data;
var fr:FileReference = new FileReference();
fr.save(data, 'test.swf');
var fileStream:FileStream = new FileStream();
trace(File.applicationDirectory.nativePath);
fileStream.open(new File(File.applicationDirectory.nativePath+"\\test.swf"),FileMode.WRITE);
fileStream.writeBytes(data, 0, data.length);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:WindowedApplication>
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.net.FileReference;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.utils.ByteArray;
public class DownloadFileMobileAS3 extends Sprite
{
public function DownloadFileMobileAS3()
{
super();
// support autoOrients
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
createLoader();
}
protected function createLoader():void
{
// TODO Auto-generated method stub
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, complete_handler);
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load(new URLRequest("http://www.shaunhusain.com/CheckboxList/CheckboxList.swf"));
}
private function complete_handler(event:Event):void
{
var data:ByteArray = event.target.data;
var fr:FileReference = new FileReference();
fr.save(data, 'test.swf');
var fileStream:FileStream = new FileStream();
trace("something");
trace(File.applicationDirectory);
trace(File.applicationDirectory.nativePath);
trace(File.applicationStorageDirectory.nativePath);
fileStream.open(new File(File.applicationStorageDirectory.nativePath+"\\test.swf"),FileMode.WRITE);
fileStream.writeBytes(data, 0, data.length);
}
}
}