-1

ダウンロードしたURLから実際のファイル名を取得する方法を見つけようとしています。これがダウンロードURLです。このURLは直接であり、リダイレクトはありません。

  http://xyzjsjwekeke.com/download/314543&r=515

このURLをクリックすると、ファイルのダウンロードが開始されます。名前は次のように非常に異なります。

   how_to_prepare_for_interview.pdf

しかし、ダウンロードurl theereは、そのようなものではありません。

base extraxtを試しましたが、URLのスラッシュが与えられた後の最後の単語として出力されます

 $filename = array_shift(explode('?', basename($url)));
 echo $filename;
4

1 に答える 1

1

そもそもファイル名がないURLからファイル名を取得する方法はありません。

あなたのURLから

http://xyzjsjwekeke.com/download/314543&r=515
                                           ^----- Probably ID to the file 

おそらく、URL から ID を取得し、ストレージ システムから実際の ID を取得します。MySQL、CDN など) send は次の方法で返送します:

header('Content-disposition: attachment; filename='.$realName);

このようなファイル名を取得する方法は、HTTP ヘッダーから直接です。Headers を使用してヘッダー情報を取得しget_headers、ファイル名を抽出します

$headers = get_headers("http://xyzjsjwekeke.com/download/314543&r=515p",true);
$headers = array_combine(array_map("strtolower",array_keys($headers)),$headers);


$fileName = isset($headers['content-disposition']) ? strstr($headers['content-disposition'], "=") : null ;
$fileName = trim($fileName,"=\"'");

var_dump($fileName);
于 2012-10-27T11:01:03.940 に答える