在智能手机和平板电脑中使用header()强制使用php下载图像

在智能手机和平板电脑中使用header()强制使用php下载图像,php,iphone,image,ipad,smartphone,Php,Iphone,Image,Ipad,Smartphone,我已经搜索了很长时间,还没有找到正确的答案 我正在尝试用PHP创建一个系统,用户可以下载我在JPG中创建的signPicture。 该程序在所有台式计算机上运行良好。这根本没有问题,即使对于IE8也是如此 我使用的标题: header("Content-Type: application/octet-stream"); header('Content-Disposition: attachment; filename="test.jpg"'); 最后,我只是将图片流式传输: imagejpeg

我已经搜索了很长时间,还没有找到正确的答案

我正在尝试用PHP创建一个系统,用户可以下载我在JPG中创建的signPicture。 该程序在所有台式计算机上运行良好。这根本没有问题,即使对于IE8也是如此

我使用的标题:

header("Content-Type: application/octet-stream");
header('Content-Disposition: attachment; filename="test.jpg"');
最后,我只是将图片流式传输:

imagejpeg($imgSign,NULL,100);
我是这么说的,它在每个浏览器中都运行得非常好。但接下来我们将讨论移动设备,例如在android中,下载test.jpg文件。。。但是它不能打开。。。ipad也是一样(实际上不下载,它在浏览器中显示图像,然后我保存它……但它也不会打开)

我还尝试了更多我看到的例子,但没有改变任何事情,比如:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download");
header("Content-Type: application/download");
header("Content-Transfer-Encoding: binary ");
你知道如何在移动设备上解决这个问题吗

谢谢

我明白了

有不同的问题。我在这篇帖子的评论中找到了明确的解决方案:

重要步骤:我用表格发送所有内容。为了使表单在手机中工作,表单需要有target=''u top'和method='get'

如果扩展名(jpg)不是大写,并且文件名不在“”之间,它也会出错

现在,它可以在我目前尝试的所有设备中工作。:)


特别感谢这篇文章的作者Jörg Wagner。

你保存了它,但它无法打开。你的意思是,文件没有被创建?它是空的吗?它是创建的但不工作吗?它比应该的小吗?它的内容有什么奇怪的地方吗?到底发生了什么?关于移动浏览器,请查看以下答案:有关更多详细信息,请保存文件,我可以在手机或平板电脑中看到。但是当我试着打开它时,它的不可修复,所以它说:你的图片是不可读的,或者是一个黑色屏幕,中间有JPG CARCHATER…如果我把文件从我的手机发送到我的电脑,它也不可读,但我可以看到它实际上有一个大小(它不是空的)。关于杰克的答案。我不强迫下载:“应用程序/强制下载”,它确实下载。。。但它只是一个文件,它不会打开后…很好的建议,但这不起作用。在iOS上,图像显示在浏览器中,但未下载(用户未保存图像)。
header("Content-Type: application/octet-stream");
header('Content-Disposition: attachment; filename="test.JPG"');