ファイルのアップロード/ダウンロード | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

このたびはPHPにてファイルのアップロード/ダウンロードのサンプルをお伝えしたいと思います。

え?それは何故かって?
実は自分用に、ファイルサーバーを立てたのですが、
ファイルのアップロードとダウンロードが意外と簡単で感動したので、
皆さんにも同じ感動を味わっていただきたいと思いまして、今回はこの題材です。

まずはサンプルコード。


if (move_uploaded_file($_FILES["filedata"]["tmp_name"],
  mb_convert_encoding("ファイルの移動先","SJIS", "EUC-JP")))
{
echo "ファイルをアップロードしました。
";
} else {
echo "ファイルをアップロードできません。
";
}


これだけです。もっと面倒なことを勝手に想像していたのに簡単です。
第一パラメータ($_FILES["filedata"]["tmp_name"])はサーバー上にとりあえず保存されファイル名です。
第二パラメータはサーバー上に保存するパスになります。



// ダウンロード用のHTTPヘッダ送信 */
ini_set("zlib.output_compression", "0");
header("Content-Disposition: inline; filename=\"".basename("ファイル名")."\"");
header("Content-Length: ".$content_length);
header("Content-Type: application/octet-stream");

//ファイルサイズでダウンロード方法を変更する
$handle = fopen("ファイル名", 'rb');
while (!feof($handle)){
echo fread($handle, 4096);
ob_flush();
flush();
}
fclose($handle);



アップロードよりも行数がありますが簡単です。
HTTPヘッダはほぼ固定のテンプレートとして送信して、
そのあとにファイルのを分割(例では4096バイト)してダウンロードしてくという感じです。

すごく簡単なんで、ぜひ一度試してみてください!