首先,如何调用从 fpassthru 返回成功的此类数据?
mUVmo6O \%W&安培; 0X米ծAZ&安培;'^ C1 $mꮪO> {{ 1}} A0> CLhH&安培;
��>�c;;U�km��G���
@ 5 ^ {,V [iZ4e1.uPm \MU˅BfY.fk&GT。; CzИ] i的ت)} I ^ JYZ֪2 Z = L ^ W | ^'}亩V; 6y `` ]A ߗ 6_w Mg # 0 WwvL4DS)B “” 3F9h ž& T公司%I, AI,ME䒢Dʄeh*ǒ= WQD<)I { %XQEO:ƛmoJP'noKSTU&放大器;曲+ VFM; MJ-IH1升;NoԎt= 1>!G [çݬ'D0 3sPdISRI1 O 7V, | %$〜Lx6 g“LJRNq” i 18 mL(G0 8 %a cȌ kB/ } ,G C'q x!X \ “A!C H_H)的p +克ۇٴ*ޫA6G 6PD $ *米; 7U,LT〜V | P〜QET” QB $ ## /)H% ? 1 Q Ә> kB?#h“ Q<9 p $ O|8 ”FI, L ? & [ k5gB&安培;} ^ - 〜^ MS; PRF __:?#3 Z =!Š{X [.pAhTƌ˺v'} 7֫QD)ӝt7 (
它们是此文件的输出 - ���w��#�W�lv�ZUl��~_��ŝg�^{Ww�0�+��%J�/A�!��AD��8"�P��3�K�D�$ �K�V;�����,Uf{Өn��6EW�}�ԧϭ�@g����������X?aI�$¶��1��s&3�8%���#�S�/:�z
�80������s��Je��撟O�*�O
,
download.php
然后我如何检查cURL我是否收到此类数据?
例如,$file = "G:/../xxx.tgz";
// Open the file in a binary mode
$fp = fopen($file, 'rb');
// Dump the tar and stop the script
$success = fpassthru($fp);
fclose($fp);
if(!$success) {
throw new Exception('Unable to downlonad');
}
,
curl.php
但如果$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, "http://127.0.0.1/.../download.php");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($curl);
curl_close ($curl);
var_dump(gettype($result)); // string 'string' (length=6)
中的echo 'hello world'
,我的数据类型结果也是download.php
。我需要区分他们。有可能吗?
答案 0 :(得分:2)
首先,使用RETURNTRANSFER成功的curl_exec将始终是一个字符串。您需要找到另一种方法来确定字符串表示的格式。
在HTTP中执行此操作的标准方法是使用mime-types。这些通常会添加到HTTP响应中的其他标头中。
在download.php中添加标题
$file = "G:/../xxx.tgz";
// Open the file in a binary mode
$fp = fopen($file, 'rb');
// output content-type header
header('Content-Type: '. mime_content_type($file));
// Dump the tar and stop the script
$success = fpassthru($fp);
fclose($fp);
if(!$success) {
throw new Exception('Unable to downlonad');
}
在curl.php中查找内容类型标题 - 请注意,这是一个非常粗略的脚本,应该适用于您的情况并指出正确的方向。
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, "http://127.0.0.1/.../download.php");
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$response = curl_exec ($curl);
curl_close ($curl);
list($headers, $body) = explode("\r\n\r\n", $response);
$headers = explode("\r\n", $headers);
$contentType = "";
foreach ($headers as $header) {
$headerParts = explode(':', $header);
if($headerParts[0] == 'Content-Type') {
$contentType = $headerParts[1];
}
}
var_dump($contentType);