NPAPI-浏览器开发之网络文件SRC下载(NPN_GetURLNotify,NPP_NewStream....)(一)

2014-11-24 02:24:22 · 作者: · 浏览: 4
在做插件的开发,当遇到插件的配置在服务器上时,这时候要把配置文件 下载到本地,把本地的文件路径传递给插件,让插件来读取配置文件,这样比把文件下载到内存,要占用空间要小。
查询NPAPI相关文档:
Plugin-In开发文档API
colin3dmax的CSDN翻译文档
NPN_GetURLNotify()的API说要下载文件,要把_target参数设为NULL.
如:NPN_GetURLNotify(m_pNPInstance, pFile, NULL, this);其中pFile即为你的插件配置的网络路径,this,为插件的对象,可以作为参数传递到下载的线程中。
NPN_GetURLNotify是线程异步,所以在下载的过程中,要考虑下载失败等异常处理体系。
整个插件的执行顺序如下:
[cpp]
39350846: NP_GetEntryPoints: Start pFncs=$B411CC
39350862: NP_GetEntryPoints: pFuncs->size=84, sizeof(NPPluginFuncs)=80
39350862: NP_GetEntryPoints: End, iRet=0
39350862: NP_Initialize: Start, pFncs=$1035CA40
39350862: NP_Initialize: MajorVersion=0, MinorVersion=27, NP_VERSION_MAJOR=0, NP_VERSION_MINOR=27, pFncs->size=236, sizeof(NPNetscapeFuncs)=224
39350862: NP_Initialize: End, iRet=0
39350862: NPP_New: Start, pluginType=$B17248, instance=$B5D078, mode=$1, argc=5, argn=$B4E280, argv=$B4E2A0, saved=$0
39350862: NPP_New: arg[1] : id='fftest'
39350862: NPP_New: arg[2] : type='application/vnd.fftester.fftest-component'
39350862: NPP_New: arg[3] : border='2'
39350862: NPP_New: arg[4] : height='320'
39350862: NPP_New: arg[5] : width='480'
39350862: CTESTNPPlugin::CTESTNPPlugin: Start, pNPInstance=$B5D078
39350862: CTESTNPPlugin::CTESTNPPlugin: End
39350862: NPP_New: End, iRet=0
39350877: NPP_SetWindow: Start, instance=$B5D078, pNPWindow=$B5D080
39350877: CTESTNPPlugin::isInitialized: Start/End
39350893: CTESTNPPlugin::init: Start, pNPWindow=$B5D080
39350893: CTESTNPPlugin::init: End, bRet=1
39350893: CTESTNPPlugin::isInitialized: Start/End
39350893: NPP_SetWindow: Start, instance=$B5D078, pNPWindow=$B5D080
39350893: CTESTNPPlugin::isInitialized: Start/End
39350893: CTESTNPPlugin::isInitialized: Start/End
39351049: NPP_GetValue: Start, instance=$B5D078, variable=$F, value=$42F3D8
39351174: NPP_GetValue: End, iRet=1
39360253: PluginWndProc: WM_SETFOCUS
39361501: WM_RBUTTONDOWN: Download large file (ie ~12 Mbytes)
39361501: CTESTNPPlugin::DownloadFileRetry: Download 'http://www.antixgames.com/d/l/toonwarz.atx ib=1'
39361517: NPN_GetURLNotify: Download 'http://www.antixgames.com/d/l/toonwarz.atx ib=1'
39361517: PluginWndProc: WM_SETFOCUS
39364231: NPP_NewStream: Start, instance=$B5D078, type=$B4E328, stream=$B05F94, seekable=0, stype=$42F4B4, size=172
39364231: NPP_NewStream: End, stype=3, iRet=0
39364231: NPP_WriteReady: Start/End, instance=$B5D078, stream=$B05F94
39364247: NPP_Write: Start/End: instance=$B5D078, stream=$B05F94, offset=0, len=172, buffer=$B19308
39364247: NPP_StreamAsFile: instance=$B5D078, stream=$B05F94, fname=D:\Users\GAVIN_~1\AppData\Local\Temp\plugtmp\plugin-toonwarz.atx
39364247: NPP_StreamAsFile: Large file downloaded to 'D:\Users\GAVIN_~1\AppData\Local\Temp\plugtmp\plugin-toonwarz.atx'
39364247: NPP_StreamAsFile: End
39364247: NPP_DestroyStream: Start, instance=$B5D078, stream=$B05F94, reason=$0
39364293: NPP_DestroyStream: Headers ...
39364293: HTTP/1.1 200 OK
Connection: close
Content-Type: text/html;
Content-Length: 172
39364293:
39364293: NP