实现HTTP下载的几种方式

我们在Internet上浏览网页时,经常会下载需要的文件,有些是FTP方式的下载,多数则是基于HTTP协议的文件下载,实质就是通过HTTP协议传输流数据。

HTTP协议传输的是MIME格式的数据,MIME定义于几个RFC的协议里,MIME的类型里有流数据相关的类型,关于MIME更多信息参考相关资料。

HTTP下载从技术上来说有两种实现方式

1. 直接链接到需要下载的文件

<a href="http://o2jam.9you.com/qihua2/songs/c-love%20love%20love.mp3">蔡依林 - 城堡</a>

这种方式使用简单,但也有一些限制,如果要下载的文件在浏览器里关联了对应的运行程序,则浏览器不会弹出下载对话框,而是直接在browser里打开这个文件了。解决的方法如下,

2. 链接到一个server端的程序

<a href="http://rainmaker.webex.com/DownloadServlet?file=bcs.exe">BCS 1.0</a>

server端程序可由jsp,php,asp等各种技术实现,上面是一个java的servlet,这个servlet取得客户端的参数file,然后读取对应的文件后组织一个http response。

HTTP下载从页面流程上来说有如下几种,

1. 点击下载链接后直接弹出下载对话框

这种方式通常是最好的实现方式,没有打开新页面,不会影响正常的页面流程。

使用上述的两种技术都可以实现这种下载方式,为了避免文件被浏览器打开,推荐写一个server端程序实现下载。

2. 点击下载链接后弹出一个新页面然后下载

有时想显示一个下载文件信息框给用户看,并且不想影响原来的页面流程,这时就可以弹出一个新页面,在新页面里显示相关的信息。

弹出新页面后,可以在这个新页面里给出一个链接或按钮,用户点击后开始下载文件,如果不想用户多一次点击,可以使用HTML的meta标签实现,如下

<META HTTP-EQUIV="refresh" content="5; URL=http://jaist.dl.sourceforge.net/sourceforge/xdoclet/xdoclet-lib-1.2.3.zip">

Open Source项目的下载实现

在Open Source项目的下载页面,用户点击某个下载地址后,页面没有变化,过了几秒种后浏览器会弹出一个下载文件对话框,这里其实是利用了HTML Meta标签

使用java下载时大概有如下3步:

   1. response.setContentType("file/unknown"); //设置content type为file/unkown
   2. response.setHeader("Content-Disposition", "attachment; filename=/"bcs.exe/""); //给出文件名
   3. OutputStream os = response.getOutputStream(); //往response里写文件

弹出空白页面并下载

看到过有的站点是这样实现的,点击下载链接后,弹出一个新的空白页面并在新弹出的浏览器实例上弹出下载对话框,当用户选择保存到本地并开始下载后,弹出的页面会自动关掉,不知这种方式的理由是什么?自动关闭浏览器又是如何实现的呢?

相关资料:
http://www.mhonarc.org/~ehood/MIME/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 实现S32K144 bootloader的几种方式可以分为以下几种: 1. 使用串口下载:在S32K144微控制器上,通过串口与计算机进行通信,通过串口接收来自计算机的固件数据,然后将固件写入到微控制器的Flash存储器中。这是一种简单且常见的实现方式,但下载速度较慢。 2. 使用CAN或LIN总线下载:通过使用CAN或LIN总线,将固件数据从计算机发送到S32K144微控制器。可以利用CAN或LIN总线的高速传输特性,实现更快的固件下载速度。 3. 使用USB下载:通过USB接口与计算机进行连接,利用USB接口的高速传输特性,将固件数据下载到S32K144微控制器中。这种方式常用于需要较快下载速度的应用场景。 4. 使用SD卡或EEPROM下载:将固件数据存储在SD卡或EEPROM中,然后通过读取SD卡或EEPROM中的数据,将固件下载到S32K144微控制器中。这种方式适用于没有网络连接或其他外部接口的场景。 5. 通过无线通信下载:利用无线通信技术,如Wi-Fi或蓝牙,将固件数据从计算机无线传输到S32K144微控制器中。这种方式适用于需要远程下载固件的场景。 在实现S32K144 bootloader时,需要根据具体的应用需求选择合适的方式,并通过编写相应的固件下载和存储算法来实现固件的安全、高效地下载。同时,还需考虑固件升级的稳定性、兼容性以及系统的灵活性等因素。 ### 回答2: 实现S32K144的Bootloader有几种方式。一种常见的方式是通过UART或CAN总线进行固件的传输和更新。这种方式下,S32K144会通过外部UART或CAN接口与PC或其他设备进行通信,接收新的固件并进行更新。 另一种方式是使用USB进行固件传输和更新。这种方式下,S32K144可以通过USB接口连接到PC或其他设备,通过USB通信协议进行固件的传输和更新。 还有一种方式是使用SPI或I2C总线进行固件的传输和更新。这种方式下,S32K144会通过SPI或I2C接口与其他设备进行通信,接收新的固件并进行更新。 此外,还可以使用SD卡或者其他外部存储设备进行固件更新。S32K144可以通过SD卡或者其他存储设备读取新的固件文件,并进行更新。 在实现Bootloader的过程中,需要编写相应的固件代码,实现固件的接收、存储和更新功能。同时还需要注意安全性,加入合适的校验和验证机制,以确保固件的完整性和安全性。 总的来说,实现S32K144 Bootloader的方式主要包括UART/CAN、USB、SPI/I2C和外部存储设备等多种方式,具体选择取决于系统需求和设计要求。 ### 回答3: 实现S32K144 bootloader的几种方式有以下几种: 1.串口加载方式:通过串口将固件或应用程序传输到目标系统的内存中。在目标系统启动时,检测串口上是否有传输请求,如果有,则进入串口加载模式,接收传输的数据并将其存储到内存中,然后从内存中执行。 2.SD卡加载方式:通过SD卡将固件或应用程序传输到目标系统的存储设备中。在目标系统启动时,检查SD卡是否插入,如果插入则进入SD卡加载模式,读取SD卡中的数据,并将其存储到内存中,然后从内存中执行。 3.以太网加载方式:通过以太网将固件或应用程序传输到目标系统的存储设备中。在目标系统启动时,检测以太网是否连接,如果连接则进入以太网加载模式,接收以太网中的数据并将其存储到内存中,然后从内存中执行。 4.USB加载方式:通过USB将固件或应用程序传输到目标系统的存储设备中。在目标系统启动时,检测USB连接状态,如果连接则进入USB加载模式,接收USB中的数据并将其存储到内存中,然后从内存中执行。 以上是实现S32K144 bootloader的几种常见方式,不同的方式适用于不同的应用场景和需求。开发者可以根据具体的需求选择合适的方式实现S32K144 bootloader。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值