php curl header 下载_php – 使用CURL下载时使用默认文件名(content_disposition)

我正在尝试使用PHP&amp ;;下载一些文件CURL,但我没有看到使用默认建议文件名的简单方法(在HTTP响应头中为

内容 – 处理:附件;文件名= foo.png

).是否有更简单的方法来获取完整的标题,解析文件名并重命名?

解决方法:

$targetPath = '/tmp/';

$filename = $targetPath . 'tmpfile';

$headerBuff = fopen('/tmp/headers', 'w+');

$fileTarget = fopen($filename, 'w');

$ch = curl_init('http://www.example.com/');

curl_setopt($ch, CURLOPT_WRITEHEADER, $headerBuff);

curl_setopt($ch, CURLOPT_FILE, $fileTarget);

curl_exec($ch);

if(!curl_errno($ch)) {

rewind($headerBuff);

$headers = stream_get_contents($headerBuff);

if(preg_match('/Content-Disposition: .*filename=([^ ]+)/', $headers, $matches)) {

rename($filename, $targetPath . $matches[1]);

}

}

curl_close($ch);

我最初尝试使用php://memory而不是/ tmp / headers,因为使用临时文件这类事情很草率,但由于某些原因我无法正常工作.但至少你明白了……

标签:php,curl

来源: https://codeday.me/bug/20190713/1452356.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值