什么是;PK和xBF¿¿&引用;PHP中的响应方式
您好,我正在使用PHP web服务上的函数readfile()将一个文件下载到iOS上的应用程序中,我想知道该文件是否正确下载,但我不知道如何才能做到这一点 因此,我正在尝试做一些回音,以了解文件是否已按如下方式下载:什么是;PK和xBF¿¿&引用;PHP中的响应方式,php,ios,Php,Ios,您好,我正在使用PHP web服务上的函数readfile()将一个文件下载到iOS上的应用程序中,我想知道该文件是否正确下载,但我不知道如何才能做到这一点 因此,我正在尝试做一些回音,以了解文件是否已按如下方式下载: echo "before"; readfile($file); echo "after"; 但我得到的回应是: beforePK¿¿¿ 任何人都知道这意味着什么,或者我如何知道文件下载是否正确 更新: 是的,这是一个zip文件,这是我的标题 header("Cache-Con
echo "before";
readfile($file);
echo "after";
但我得到的回应是:
beforePK¿¿¿
任何人都知道这意味着什么,或者我如何知道文件下载是否正确
更新:
是的,这是一个zip文件,这是我的标题
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$ticket");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
PHP应该在
readfile()
之前设置正确的头文件-这实际上是将文件读取到浏览器/应用程序。。。但是浏览器/应用程序需要知道如何处理它…PHP应该在readfile()
之前设置正确的头文件-这实际上是将文件读取到浏览器/应用程序。。。但是浏览器/应用程序需要知道如何处理它…您正在尝试输出zip文件的内容,不是吗
readfile($file)
的工作原理与echo file\u get\u contents($file)
相同。如果您试图向某人提供要下载的文件,请不要添加任何其他输出,否则可能会破坏该文件
我还建议大家阅读一下函数。这样,您就可以明确地告诉浏览器您正在发送一个文件,而不是一个包含类似文件内容的HTML页面。(参见涉及
内容类型的示例)您正在尝试输出zip文件的内容,不是吗
readfile($file)
的工作原理与echo file\u get\u contents($file)
相同。如果您试图向某人提供要下载的文件,请不要添加任何其他输出,否则可能会破坏该文件
我还建议大家阅读一下函数。这样,您就可以明确地告诉浏览器您正在发送一个文件,而不是一个包含类似文件内容的HTML页面。(请参见涉及内容类型的示例)通常,您只需假设一旦连接关闭,数据就完成了传输。如果要验证文件是否已完全传输,并且没有损坏,则需要使用XML或JSON之类的数据结构,该结构将:
对数据字段进行分隔,如果省略了一个错误,则会导致XML/JSON解析器抛出一个错误,即传输在完成之前被切断
允许您在响应中嵌入多个数据,例如文件的MD5散列,可以在客户端重新计算以验证数据是否完整
例如:
通常,您只需假设一旦连接关闭,数据就完成了传输。如果要验证文件是否已完全传输,并且没有损坏,则需要使用XML或JSON之类的数据结构,该结构将:
对数据字段进行分隔,如果省略了一个错误,则会导致XML/JSON解析器抛出一个错误,即传输在完成之前被切断
允许您在响应中嵌入多个数据,例如文件的MD5散列,可以在客户端重新计算以验证数据是否完整
例如:
输出文件时不要包含echo语句;为文件类型(本例中为zip文件?)设置适当的标题,并查看是否可以使用适当的软件在客户端上成功打开该文件readfile()
不下载,它会输出文件内容。在您的例子中,这似乎是一个ZIP文件头和二进制负载;为文件类型(本例中为zip文件?)设置适当的标题,并查看是否可以使用适当的软件在客户端上成功打开该文件readfile()
不下载,它会输出文件内容。在您的例子中,这似乎是一个ZIP文件头和二进制负载。
$file = 'myfile.zip';
$my_data = array(
'file' => base64_encode(file_get_contents($file)),
'hash' => md5_file($file)
)
//header calls
header(...)
echo json_encode($my_data);
exit;