Php 如何使用内容处置标头设置下载的UTF-8文件名?
我正在亚马逊云硬盘上存储我的文件。还有一个选项可以设置Php 如何使用内容处置标头设置下载的UTF-8文件名?,php,header,content-disposition,Php,Header,Content Disposition,我正在亚马逊云硬盘上存储我的文件。还有一个选项可以设置响应内容配置,以直接从Amazon链接 从API: 响应内容处置:(可选)如果指定,响应的内容处置将设置为此值 我需要设置它下载mp3文件。我不需要在浏览器上玩它 我想设置下载的文件名:Ббжжзззззззааабб.mp3 我试过很多方法。。。URL编码。。。URL编码+http生成查询等 但现在的结果是:下载文件时,CharStyleбббС+Бжзббббббб+-+Кабзбббб.mp3 下面是我的php代码: <?php
响应内容配置
,以直接从Amazon链接
从API:
响应内容处置
:(可选)如果指定,响应的内容处置将设置为此值
我需要设置它下载mp3文件。我不需要在浏览器上玩它
我想设置下载的文件名:Ббжжзззззззааабб.mp3
我试过很多方法。。。URL编码。。。URL编码+http生成查询等
但现在的结果是:下载文件时,CharStyleбббС+Бжзббббббб+-+Кабзбббб.mp3
下面是我的php代码:
<?php
function file_generate_download_link($filename = false, $force = true)
{
$json['tempLink'] = 'https://content-na.drive.amazonaws.com/cdproxy/templink/iTwUqoQ3cJXOpj6T8SCDmKwtF37TAENiSLQzy7pTSbkFfJttb';
$url = $json['tempLink'];
if($force)
{
$data['download'] = 'true';
}
if($filename)
{
$data['response-content-disposition'] = ' attachment; filename*=UTF-8\'\''.urlencode($filename).'';
}
if(isset($data)) {
$data = http_build_query($data);
$url .= '?' . $data;
}
return $url;
}
echo file_generate_download_link($filename = 'Эльбрус Джанмирзоев - Кавказская любовь.mp3');
?>
此代码返回给我此链接:
如果我输入此链接,Chrome将使用此名称保存此文件:
БббС+жзззз+-+азззааааа+ааааа
但我需要使用以下名称保存文件:
Ббжззззззззззааааааазmp3
我的错在哪里?明白了!我需要使用rawurlencode函数
因此,正确的代码是:
<?php
function file_generate_download_link($filename = false, $force = true)
{
$json['tempLink'] = 'https://content-na.drive.amazonaws.com/cdproxy/templink/iTwUqoQ3cJXOpj6T8SCDmKwtF37TAENiSLQzy7pTSbkFfJttb';
$url = $json['tempLink'];
if($force)
{
$data['download'] = 'true';
}
if($filename)
{
$data['response-content-disposition'] = ' attachment; filename*=UTF-8\'\''.rawurlencode($filename).'';
}
if(isset($data)) {
$data = http_build_query($data);
$url .= '?' . $data;
}
return $url;
}
echo file_generate_download_link($filename = 'Эльбрус Джанмирзоев - Кавказская любовь.mp3');
?>
您得到的文件名与您想要的文件名完全相同。你到底在找什么?不,它用加号表示空格。但现在空间是好的:)