もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

phpで実装したファイルダウンロードが、chromeで変な挙動になる。

はじめに

こんばんは。

前回に続いて簡単なものです。

本日、phpで実装したファイルダウンロードがおかしくなるという話をききました。

現象としては、'donwload.csv' というように、シングルクォーテーションがついてきてしまうという現象でした。

実際に試してみると、自分が使っている最新のchromeでも確かにその現象が起きていました。

ちなみに試したのはmacchromeで、バージョン 72.0.3626.109 になります。

コード

上記の現象が起きたコードはこんな感じのコードでした。

public function download($fileSize, $contentType, $downloadName) {
    header("Content-Type: {$contentType}");
    header("Content-Length: {$fileSize}");
    header("Content-Disposition: attachment; filename='{$downloadName}'");
    readfile($filePath);
}

headerのコードのfilenameの部分をシングルクォーテーションで囲んでいる部分が問題のようでした。

該当のコードを

header("Content-Disposition: attachment; filename=\"{$downloadName}\"");

のようにダブルクォートで囲うようにするか、そもそもクォーテーションで囲わなければ同現象がおきているchromeでも問題なくdownloadできました。

chrome singlequote download とかでググると、同現象と同じ現象かな?と思える物が見つかりました。

こちらでは、とりあえずEdgeか古いバージョン使えと書いていました...

何か他に情報あれば教えてください。