案例1我在Amazon上托管了一个日历事件iCal .ics文件,该文件的HTTP是集成在我的安卓应用程序中的。
当用户单击URL时,将显示带有以下选项的意图选择器:
当我选择时,它会给我一个错误,上面写着“无法发布会”
当我选择Chrome时,该文件将被下载,当用户单击下载的文件时,也会出现“无法发布会”的相同错误。
以下是使用桌面铬客户端http Postman下载文件时的响应头
Accept-Ranges → bytes
Content-Length → 959
Content-Type → application/octet-stream
Date → Thu, 10 Mar 2016 13:45:10 GMT
ETag → "5d48719213395a28e09e8adf01f6ce83"
Last-Modified → Wed, 09 Mar 2016 15:24:22 GMT
Server → AmazonS3
x-amz-id-2 → XXXXXXXXXXXXXXXXXXXXXXXXX
x-amz-request-id → XXXXXXXXXXXXXXXXXXX我在本地服务器上编写了一个简单的脚本来下载相同的文件,而不是直接从HTTP访问文件
PHP代码
<?php
$file = $_GET['file'];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>该文件已成功下载,然后
以下是使用PHP脚本时的响应头
Cache-Control → must-revalidate, post-check=0, pre-check=0
Connection → Keep-Alive
Content-Description → File Transfer
Content-Disposition → attachment; filename=World_Television_Premiere_of_House_Of_Cards_March_1213_5pm_on_Zee_Cafe.ics
Content-Length → 959
Content-Transfer-Encoding → binary
Content-Type → application/octet-stream
Date → Thu, 10 Mar 2016 07:27:15 GMT
Expires → 0
Keep-Alive → timeout=5, max=100
Pragma → public
Server → Apache/2.4.7 (Ubuntu)
X-Powered-By → PHP/5.5.9-1ubuntu4.14请任何一个人帮助理解为什么事件没有保存或工作的案例1?
提前谢谢。请帮帮忙。
编辑
Android设备: Nexus 6 (6.0.1)
Google应用程序:5.3.6-115544951-发布
发布于 2018-04-29 12:00:14
我的web应用程序创建的.ics文件也有类似的问题。桌面gmail对它们的反应很好,但是在android上打开附件导致“无法发布会”。Google为其邀请邮件生成的ICS文件运行良好,因此我做了一些二进制搜索并找出了问题:我的.ics文件丢失了DTSTAMP属性。该属性是强制性的,因此移动应用程序抱怨是错误的,我只是希望错误信息能够提供更多的信息。
教训是: web应用程序可能比移动应用程序更松散,所以不要仅仅因为web应用程序在其中一种或另一种中工作得很好就假定您有一个适当的标准实现。
发布于 2016-04-27 14:17:46
目前-现在是2016年4月27日-提供的文件在我的Google上为Android5.4-1198打开了罚款.但是我也有一个类似的问题,结果是Google在导入.ics文件时失败了,这些文件是BOM的UTF-8。现在我把它们作为UTF-8从服务器发送,没有BOM,一切都很好。
发布于 2016-03-11 09:55:24
在第一种情况下,您可能希望将内容类型设置为文本/日历
在第二种情况下,可能是因为您传递的是以.ics结尾的文件名的内容处理。这样客户端就可以从扩展中推断出格式。
https://stackoverflow.com/questions/35918537
复制相似问题