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

本文介绍了如何使用NPAPI进行浏览器插件开发,特别是利用NPN_GetURLNotify下载网络文件到本地,并在下载完成后通过NPP_URLNotify通知插件。在下载过程中,需要处理异步操作和异常情况,文件被保存到用户的临时文件夹。通过重写NPP_NewStream和NPP_StreamAsFile方法,可以实现文件下载并获取本地路径。
摘要由CSDN通过智能技术生成

在做插件的开发,当遇到插件的配置在服务器上时,这时候要把配置文件下载到本地,把本地的文件路径传递给插件,让插件来读取配置文件,这样比把文件下载到内存,要占用空间要小。

查询NPAPI相关文档:

Plugin-In开发文档API

colin3dmax的CSDN翻译文档

 

NPN_GetURLNotify()的API说要下载文件,要把_target参数设为NULL.

如:NPN_GetURLNotify(m_pNPInstance, pFile, NULL, this);其中pFile即为你的插件配置的网络路径,this,为插件的对象,可以作为参数传递到下载的线程中。

NPN_GetURLNotify是线程异步,所以在下载的过程中,要考虑下载失败等异常处理体系。

整个插件的执行顺序如下:

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, instan
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值