Jer*_*dge 1 delphi http indy indy10 delphi-xe2
我开发了一个HTTP API服务器(打算由第三方应用程序调用,不一定是通过Web浏览器调用),它get通过name在查询字符串中传递参数来对(下载)任何和所有类型的文件进行一次通用调用请求的文件.所有调用,无论哪个文件,都在我的同一个自定义请求处理程序中处理Get(不要与标准HTTP混淆get).查询字符串包含name标识要获取的唯一文件的属性.
所以请求可能如下所示:
http://MyServerURL.com/Get?Key=SomeAPIKeyForAuthentication&Name=SomeUniqueIdentifier
Run Code Online (Sandbox Code Playgroud)
首先,我知道我显然可以让服务器仅使用URI来获取文件,例如......
http://MyServerURL.com/SomeUniqueIdentifier?Key=SomeAPIKeyForAuthentication
Run Code Online (Sandbox Code Playgroud)
...但设计专门用于使用这一个通用get命令,因此我需要在查询字符串中保留此唯一标识符.连接到此API的实际应用程序永远不需要知道此文件名,但是当手动提供URL以便某人在其浏览器中打开以下载文件时,可能会发生一个事件.
但是,无论何时通过Web浏览器下载文件,由于调用是get,所以保存的文件名也会随之而来get.
我可以在我的服务器上实现HTTP中的任何技巧,这会强制下载的文件名是唯一的标识符,而不仅仅是get?例如,某些方法如使用重定向?
我TIdHTTPWebBrokerBridge在Delphi XE2中使用Indy 10 作为Web服务器.当我TWebModule处理这个get请求时,我正在寻找这个组件中的一种方法(技术上在它的相应处理程序中),使响应的文件名成为我想要的任何字符串(在本例中SomeUniqueIdentifier).我听过"URL重写"一词,但这是一个相当不同的话题,并不认为这是我需要的,但它可能会.
这似乎是一种相当漫长的说法,你想要为HTTP下载设置文件名,而不依赖于用于获取它的URL.在这种情况下,您只需发送一个Content-Dispositon标头,指定所需的文件名.见rfc 2616第19.5.1节
例如
Content-Disposition: attachment; filename="stackoverlow.ans"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |