2016-12-05 8 views
0

Webrootフォルダ以外のフォルダにファイルをアップロードし、データベースによって認証された後にファイルを取得するためにPHPコードを使用しています。私のコードは動作している、すなわちファイルを取得している、唯一の問題は、アップロードされたpdfsにスペースのあるファイル名が含まれていて、以下のコードがスペースの前の最初の単語を取得しているようです。root以外のファイルを取得し、空白を含むファイル名を削除しないでください

例のファイル名は London.pdf 野生生物写真パート1.pdfへの旅

ある以外のデータベースとphuycicalファイルを通過し、スペースの代わりにアンダースコアを含むように、各ファイルを置き換えてから、そこにあります私は下のコードを変更してファイル名全体を取得する方法ですか?

スペースが検出されたにもかかわらず、それが機能しない場合、ファイル名を%20に置き換えることができると考えました。

/* Done some processing above to retrieve the $filename for the pdf */ 

$file = 'h:'.$filename; 


header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename=' . basename($file)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
ob_clean(); 
flush(); 
readfile($file); 
exit; 

答えて

1

アップロードされたPDFは、スペースと以下のコードを含むファイル名が含まれているだけのスペースの前に最初の単語を検索しているようです。

引用名前:

header('Content-Disposition: attachment; filename="' . basename($file) . '"'); 

か明確形で:

header(sprintf('Content-Disposition: attachment; filename="%s"', basename($file))); 
関連する問題