2016-11-04 20 views
0

私は、リモート(FTP)サーバからクライアントへのダウンロードを容易にしようとしているクライアント向けのWebベースのファイル管理インタフェースを構築しています。まずWebサーバーを起動します。FTPファイルをクライアントにダウンロードするReadfile()

Readfile()は、ウェブベースのダウンロードとパブリックFTPサーバーの両方で完全に動作することがわかっています。問題は、FTP URL経由で資格情報を指定すると、明らかに動作しなくなることです。私はこのオンラインの他のレポートを見つけましたが、これまでのところ解決策や回避策はありません。

$file_url = 'ftp://username:[email protected]/198.2.148.130%20port%2025665/server.properties'; 
header('Content-Type: application/octet-stream'); 
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
readfile($file_url); 

期待どおりに動作する回避方法がありますか?私は、これがどのようにして固定できるのか困っています。どこよりもバグのようです。

+0

実際に上記の方法で、ファイルをサーバーにダウンロードしてからクライアントに中継します。 – arkascha

+0

あなたの特定の質問について:phpのftp拡張子を見て、一時ファイルを使用してください。 – arkascha

+0

私はお詫びします、私はもっとはっきりしていたはずです。私が使っているアプローチでは、クライアントがダウンロードを完了するまで待つ必要がありません。サーバー上のメモリにのみ格納し、ファイルに書き込むことはしません。 –

答えて

0

URLのURLエンコードされたスペース(%20)が原因であるようです。

ただ、リテラルスペースを使用します。

$file_url = 'ftp://username:[email protected]/198.2.148.130 port 25665/server.properties'; 

これは、PHPのFTP URLラッパーに資格情報をこのように指定するには、完全に有効です。

+0

奇妙なことに私はすでに2度試したことがあると誓っていたかもしれませんが、今は実際に働いています。コメントで言いましたが、もう一度試してみてください。ありがとう! –

+0

私は2分後にそれを受け入れるでしょう:) –

+0

答えに対するあなたのアップデートに従って、クライアント上で自動的にダウンロードを開始するphp ftp urlラッパーに似たような選択肢がありますか?クライアントのダウンロードが始まる前にWebサーバーにダウンロードする必要があった、それが私が見つけた他のすべてのアプローチの主な懸念でした。 –

関連する問題