Bry*_*eld 16 browser android content-type download content-disposition
如果我通过webapp将文件提供给浏览器,我通常只需将URL设置为http://website.com/webapp/download/89347/image.jpg.然后我设置HTTP标头Content-Type: application/octet-stream; filename=image.jpg和Content-Disposition: Attachment.
但是,在Android上.似乎我可以将文件下载的唯一方法是设置Content-Type: image/jpg.否则文件名会出现<Unknown>并出现错误
下载失败
无法下载.此手机不支持该内容
有没有办法让Android下载并通过浏览器打开文件而不保留mime类型列表?
Jps*_*psy 25
要使所有(特别是旧版本)Android版本按预期进行任何下载,您需要...
阅读我的博客文章了解更多详情:http:
//digiblog.de/2011/04/19/android-and-the-download-file-headers/
小智 10
如果html页面出现在你下载的文件中,Dmitriy(或其他寻找可能解决方案的人),我怀疑这是由于双重HttpRequest GET问题.典型的场景是以下POST,Redirect,GET模型:
Android浏览器向服务器发出HttpRequest POST(例如提交按钮或链接以请求下载文件,filename.ext说)
服务器将请求的filename.ext流式传输到字节,存储在会话变量中,然后发出Response.Redirect到Download.aspx,例如,处理响应对象构造
Android浏览器正确地将HttpRequest GET发送到服务器以获取Download.aspx
服务器响应典型的内容处理:附件; filename ="filename.ext"样式构造,其响应对象包含所请求的filename.ext,即会话变量中的字节.
我相信,Android下载管理器会向服务器发送另一个HttpRequest GET以获取Download.aspx.我怀疑下载管理器将之前的"附件"响应解释为发送第二个GET的触发器.
Server(Download.aspx)再次尝试构造响应对象以发送回浏览器.
Android下载管理器使用第二个Download.aspx中的响应对象内容下载filename.ext.
在许多情况下,这很好.但是,例如,如果Download.aspx代码中的服务器执行一些内务处理并在第一次调用时删除会话变量,则下一次没有会话变量.因此,根据代码的编写方式,可能是响应对象没有明确构造,也许Response.End不会被调用,所以只有Download.aspx的html最终被发送.
这是我们使用Wireshark发现的,虽然我承认我假设它是Android下载管理器,这是双GET的原因.
我希望这个解释有所帮助.
| 归档时间: |
|
| 查看次数: |
50273 次 |
| 最近记录: |