我目前正在开发一个PHP脚本,允许您通过访问链接从移动设备下载媒体内容(视频,音频,图片...).(即http://www.my-web-site.com/download.php?id=7ejs8ap)当我用最近的手机(三星Galaxy S,iPhone 4S,其他一些人)测试时,我的脚本非常有用. )但我的旧手机三星C3050出现错误.我想下载的媒体只是一个音频mp3文件,我通常很容易下载.
该错误似乎是"未知内容类型".因此,由于我唯一的HTTP标头Content-Type是"application/force-download",我尝试对此进行评论并再试一次.然后,它的工作原理.但是现在,我目前正在询问这种内容类型的含义以及是否可以强制其他移动设备.我在iPhone 4上没有使用Content-Type进行测试,但它确实有效,但我不确定所有移动设备的兼容性.
有人可以解释一下Content-Type是如何工作的,为什么这不是标准的MIME或其他所有可以帮助我确保这是每个下载的选项内容类型,无论文件,浏览器或设备是什么我正在下载?
感谢大家.
这是我发送的PHP标头:
<?php
//Assume that $filename and $filePath are correclty set.
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.$filename.'"');
// header('Content-Type: application/force-download'); Non-standard MIME-Type, incompatible with Samsung C3050 for example. Let it commented
readfile($filePath);
?>
Run Code Online (Sandbox Code Playgroud)
编辑:我刚试过索尼Xperia,下载不成功:我只看到我要下载的文件的"html编码"字节.如果application/octet-stream或application/force-download不起作用,我怎么知道我必须使用哪种内容类型?
我目前正在尝试删除我的项目中的所有错误和警告,我的PHPStorm中的检查工具给了我.
我遇到一个片段PHPStorm说"未使用的私有方法_xxx"虽然它实际上使用,但以动态的方式.这是一个简化的代码段:
<?php
class A
{
private function _iAmUsed()
{
//Do Stuff...
}
public function run($whoAreYou)
{
$methodName = '_iAm' . $whoAreYou;
if (method_exists($this, $methodName)) {
$this->$methodName();
}
}
}
$a = new A();
$a->run('Used');
?>
Run Code Online (Sandbox Code Playgroud)
在这个片段中,PHPStorm将告诉我"未使用的私有方法_iAmUsed",而事实上,它被使用...我怎么能通过添加PHPDocs或其他东西,让我的IDE理解我的方法实际上是用的?
请注意,我给我的"运行"调用,一个静态字符串,但我们可以想象这个:
<?php
$a->run($_POST['whoYouAre']); //$_POST['whoYouAre'] == 'Used'
?>
Run Code Online (Sandbox Code Playgroud)
非常感谢!
最近,我在计算LCOM4的过程中遇到了一个问题,这个度量用于查找类的方法和属性是如何隐藏的.
LCOM4是"计算方法凝聚力缺乏的第四种方法",Hitz和Montazeri对此进行了描述(http://www.isys.uni-klu.ac.at/PDF/1995-0043-MHBM.pdf)并且目前是定义一个班级拥有多少责任的最佳方式.
我会尝试不使用特定的开发语言,因为我的问题是针对所有OOP语言.
让我基本上用默认算法解释它对不知道的人的作用:
Class Foo {
property a,b
function f1() { this.a = 1 }
function f2() { this.f1() }
function f3() { this.b = 3 }
}
Run Code Online (Sandbox Code Playgroud)
这个类有两个流程:
所以Foo的LCOM4是2.
让我们改变例如函数f2()来共享属性b.
Class Foo {
property a,b
function f1() { this.a = 1 }
function f2() { this.f1(); this.b = 1 }
function f3() { this.b = 3 }
}
Run Code Online (Sandbox Code Playgroud)
现在这个类只有一个流程:
这意味着Foo的LCOM4现在为1.
LCOM4 = 0或LCOM4 = 1表示班里有没有或只有1名责任,这是每个人都必须要为自己的班级,因为他们尊重小号的小号奥利德良好做法.
您可以在此处找到有关图表的更多信息:http: …