2016-04-30 8 views
2

Amazon Cloud Driveにファイルを保存しています。また、Amazonからのリンクを直接設定するためのresponse-content-dispositionの設定オプションもあります。コンテンツ処理ヘッダーを使用してダウンロードしたUTF-8ファイル名を設定するにはどうすればよいですか?

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-8%27%27%25D0%25AD%25D0%25BB%25D1%258C%25D0%25B1%25D1%2580%25D1%2583%25D1%2581%2B%25D0%2594%25D0%25B6%25D0%25B0%25D0%25BD%25D0%25BC%25D0%25B8%25D1%2580%25D0%25B7%25D0%25BE%25D0%25B5%25D0%25B2%2B-%2B%25D0%259A%25D0%25B0%25D0%25B2%25D0%25BA%25D0%25B0%25D0%25B7%25D1%2581%25D0%25BA%25D0%25B0%25D1%258F%2B%25D0%25BB%25D1%258E%25D0%25B1%25D0%25BE%25D0%25B2%25D1%258C.mp3

をChromeは、この名前を持つこのファイルを保存します

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

しかし、私は

私のミスです

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

:この名前でファイルを保存excatly必要ですか?

+0

あなたが取得しているファイル名としたいファイル名が全く同じです。何をここで探していますか? –

+0

いいえ、プラス記号でスペースを作成します。しかし、今はスペースが良いです:) –

答えて

1

Gotcha!私は関数を使用する必要があります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'); 
?> 
関連する問題