0

这是我的代码:我创建了一个 flex 移动应用程序,我想在其中将 pdf 格式的文件保存在 ipad/iphone(任何 IOS 设备)中,但在保存该文件时,它会出现 #2038 错误。这是我的代码。

var file:File = File.desktopDirectory.resolvePath("indicators.pdf");

if (file.exists)
 file.deleteFile(); //delete it if exists
//create a file stream to be able to write the content of the file    
var fileStream:FileStream = new FileStream();

var popUpPage:AlertPage = new AlertPage();

try
{
 //open the file stream and set for Write
 fileStream.open(file, FileMode.WRITE);
 //writes the bytes
 fileStream.writeBytes(pdfBytes, 0, pdfBytes.length);
 //close the stream
 fileStream.close();

 PopUpManager.addPopUp(popUpPage,this,true);
 popUpPage.lblAlert.text = "indicator saved in pdf format = "+ file.nativePath;
 PopUpManager.centerPopUp(popUpPage);
 this.visible = false;
}
catch(err :Error)
{
 PopUpManager.addPopUp(popUpPage,this,true);
 popUpPage.lblAlert.text = err.message + "  "+ file.nativePath;
 PopUpManager.centerPopUp(popUpPage);
}
4

2 回答 2

0

不确定权限如何在我们的桌面环境(Flex-Desktop 应用程序)中的 Android 上工作,我们能够通过修复文件夹权限来消除错误(授予用户读写修改权限)

于 2013-09-20T19:07:37.803 回答
0

您无法保存到desktopDirectory任何移动设备上。您的应用只能保存到applicationStorageDirectory. 由于这个原因,你所拥有的每次都会出错。

作为一个简单的技巧,您应该这样做以允许两者。

private const isDesktop:Boolean = false;
private var baseDirectory:File = ( isDesktop ) ? File.desktopDirectory:File.applicationStorageDirectory;

//and to declare a file, do this
private var pdf:File = this.baseDirectory.resolvePath( 'blah.pdf' );

因此,您切换isDesktop属性以选择要使用的属性并相应地baseDirectory声明。然后,您只需从baseDirectory每次解析路径,而不是进行硬编码applicationStorageDirectorydesktopDirectory.

从长远来看,这种方法对于调试来说更加灵活。

于 2012-11-19T19:36:26.210 回答