フォルダ内の画像をダウンロードしたいです。
下記ようなフォルダ構成になっており、datas配下には「20200603」のような日付のフォルダが沢山あり、その中のimagesフォルダの中に画像が複数入っています。
├ datas/
│ └ 20200603/
│ └ images/
│ ├ image01.png
└ dl.php/ └ image02.png
発生している問題
実行すると画像がダウンロードされるのですが、画像を開くと「このファイルはサポートされていない形式のようです」と表示され、ファイルを上手く指定できていないようです。
ソースコード
$idで日付のフォルダ(上記だと「20200603」のフォルダです)を指定して、画像を取り出したいです
php
1$id = '20200603'; 2//ディレクトリ内のファイル一覧を取得 3$result = glob("./datas/{$id}/images/*"); 4 5foreach ($result as $fpath) { 6 7 //トリムして画像のファイル名を取得 8 $file = str_replace("./datas/{$id}/images/", '', $fpath); 9 10 //画像のダウンロード 11 header('Content-Type: application/octet-stream'); 12 header('Content-Length: '.filesize($fpath)); 13 header('Content-disposition: attachment; filename="'.$file.'"'); 14 readfile($fpath); 15}
試したこと
・パスやファイル名が合っているかvar_dump($result)、var_dump($fpath)、echo $fileなどと表示させながら進めてみました。ファイル名などは指定出来ているように思います。
・下記ソースで実行したところ指定した画像がダウンロードでき、画像も表示されました。
php
1$id = '20200603'; 2 3//画像のパスとファイル名 4$fpath = "./datas/{$id}/images/image01.png"; 5$fname = 'image01.png'; 6 7//画像のダウンロード 8header('Content-Type: application/octet-stream'); 9header('Content-Length: '.filesize($fpath)); 10header('Content-disposition: attachment; filename="'.$fname.'"'); 11readfile($fpath);
どちらのソースコードでダウンロードされた画像も同じファイル名なのですが、1つ目のソースコードではどこに原因があるのでしょうか?
ご教授の程よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/03 05:43
2020/06/03 05:54