先日からありがとうございます。
現在、普通のアンカーリンクで重いファイル(約1GB)から軽いファイル(約300KB)まで、
ファイル名をリンク記述してダウンロードできるようにしております。
そんな中で、二つやりたいことがあってそれはPHPでカンタンにできるものでしょうか。
もしそうならぜひやりたいです。
●やりたいこと(1)・・・ダウンロード場所をノロノロ選んでもちゃんとダウンロードさせたい
IE7でも、Firefox3.5.8でもなのですが、ダウンロードリンクをクリックするとWindowsダイヤログボックスで保存場所を聞いてきますが、そのとき、聞いてきたとき最初に表示されているディレクトリに保存するのは問題ないのですが、違うディレクトリに移動して保存しようとすると、IEだと保存したあとに解凍したら中が空のメッセが出て、Firefoxだとダウンロード自体が開始できないメッセが出ます。
ファイルがKBであろうがGBであろうが関係なくです。
これはサーバの品質によるものでしょうか?
もしそうでなく、PHPでうまくやることによってこれを回避できるのならぜひやりたいです。
●やりたいこと(2) ・・・Webから見れない領域にダウンロードファイルを引越ししたい
以下のURLにそれっぽいことが書いてありましたが、ダウンロードを開始させるアンカーリンクなのかフォームボタンなのかわかりませんが、どうやってそこには記述すればよいのかわかりませんでした。
http://shoyu-ramen23.jugem.jp/?mode=comment&act=captcha
------------------------------------------------------------
【抜粋】
PHP WEBからアクセス出来ない場所のファイルをダウンロードさせる
WEBからアクセス出来ない場所のファイルをreadfile関数を使ってダウンロードさせる
<?php
//ダウンロードファイル(WEBからアクセス出来ない場所)
$download_file = '/var/www/souko/mydata.zip';
if (file_exists($download_file)) {
//ファイル名とファイルサイズを得る
$filename = basename($download_file);
$filesize = filesize($download_file);
//ダウンロード開始
header('Content-type: application/octet-stream');
header('Content-disposition: attachment; filename="'.$filename.'"');
header('Content-Length: '.$filesize);
//出力バッファをオフ
ob_end_flush();
readfile($download_file);
}
?>
Fedora Core 4と同時にインストールしたPHP(php.ini未編集)の環境において、サイズの大きなファイルをダウンロードさせる場合、ob_end_flush()を記述することで可能となった。
------------------------------------------------------------
「$download_file」は「/var/www/souko/mydata.zip'」というひとつのファイルに紐付けされると思うので、「$download_file」をアンカーリンクに記述するのではファイルの数だけ「「$download_file」」のような変数名?をつくっていかなくてはならず、ダウンロードファイルの数はものすごく多いので、あまりに非効率だからそんな方法であるはずがないと思いました。
どのようにすればできるでしょうか?
質問が広いもののような気がするのに加えて、自身がプログラミング全くの初心者なので、あまりに的を得ていない質問かも知れません。そのときはどうかご指摘ください。
このスレッドを削除してもらいますので。
それでは恐れ入りますが宜しくお願いいたします。