我正在为 Chrome 开发 NaCl 插件,并尝试将 URL 资源文件在本地下载到 Chrome 的临时缓存中,但没有成功。
这是我如何进行的:
// I indicate that I want the resource to be downloaded to a file
m_URLRequestInfo.SetStreamToFile( true );
// I open the request:
m_URLLoader.Open( m_URLRequestInfo, m_CCFactory.NewCallback( &MyClass::OnOpen ) );
...
// My callback (OnOpen) is eventually called.
// I then check to make sure the status code is 200 using this call:
m_URLLoader.GetResponseInfo().GetStatusCode()
// Then I ask to download the whole file:
m_URLLoader.FinishStreamingToFile( m_CCFactory.NewOptionalCallback( &MyClass::OnFileDownloaded ) );
...
// My other callback (OnFileDownloaded) gets eventually called,
// and again the status code is 200.
// Then I query the FileRef using this call:
pp::FileRef l_FileRef = m_URLLoader.GetResponseInfo().GetBodyAsFileRef();
返回的 pp::FileRef 似乎没问题,但是 pp::FileRef::GetFileSystemType() 返回 PP_FILESYSTEMTYPE_EXTERNAL,然后对 pp::FileRef::GetPath() 的调用失败(它返回一个 UNDEFINED pp::Var)。
所以从这一点开始,我迷路了。我不知道我应该做些什么来获得一个有效的 pp::FileRef 指向浏览器缓存中的本地文件。我的最终目标是使用像 fopen() 这样的标准系统文件 IO 打开这个本地文件(在我的例子中是一个图像文件)。
谢谢你的光!