簡體   English   中英

如何使用 content-disposition 標頭設置下載的 UTF-8 文件名?

[英]How to use the content-disposition header to set a downloaded UTF-8 filename?

我將我的文件存儲在 Amazon Cloud Drive 上。 並且可以選擇將response-content-disposition為來自亞馬遜的直接鏈接。

從API:

response-content-disposition :(可選)如果指定,則響應的內容處置將設置為此值

我需要設置它下載mp3文件。 我不需要在瀏覽器上播放它。

我想設置下載的文件名: Эльбрус Джанмирзоев - Кавказская любовь.mp3

我嘗試了很多方法... Urlencode... Urlencode + http 構建查詢等...

但現在的結果是:下載文件時, Эльбрус+Джанмирзоев+-+Кавказская+любовь.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');
?>

此代碼返回此鏈接:

https://content-na.drive.amazonaws.com/cdproxy/templink/iTwUqoQ3cJXOpj6T8SCDmKwtF37TAENiSLQzy7pTSbkFfJttb?download=true&response-content-disposition=+attachment%3B+filename%2A%3DUTF-85%D20%DUTF-85%D27D %25BB%25D1%258C%25D0%25B1%25D1%2580%25D1%2583%25D1%2581%2B%25D0%2594%25D0%25B6%25D0%25B0%25D0%25D1%25D0%20%20%B5B5B5B5D0 %2580%25D0%25B7%25D0%25BE%25D0%25B5%25D0%25B2%2B-%2B%25D0%259A%25D0%25B0%25D0%25B2%25D0%25BA%20%20%D720%20%25%D72 2581%25D0%25BA%25D0%25B0%25D1%258F%2B%25D0%25BB%25D1%258E%25D0%25B1%25D0%25BE%25D0%25B2%25D1%258C。

如果我輸入此鏈接,Chrome 會使用以下名稱保存此文件:

Эльбрус+Джанмирзоев+-+Кавказская+любовь.mp3

但我需要用這個名字保存文件:

Эльбрус Джанмирзоев - Кавказская любовь.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');
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM