PHPの画面にファイル名を入力してダウンロードするすサンプルです。
(確認環境:PHP 7,XAMPP 7.2.8,Windows 10)
目次
サンプル | 画面にファイル名を入力してダウンロードする内容 |
ファイル名を入力するファイル(index.php) | |
ダウンロードを行うファイル(download.php) |
画面にファイル名を入力してダウンロードする内容
やりたいこと
1.入力元(index.php)の画面にファイルのURLを入力しボタンを押します。
2.コードに指定したD:\workにファイルをダウンロードします。画面に成功のメッセージが表示されします。
ファイルの配置場所
D:\xampp\htdocsフォルダ配下にtestフォルダを作成しその中にファイルを配置しました。
http://localhost:180/test/を入力するとindex.phpが表示されます。
※index.phpをブラウザにドラッグアンドドロップしてブラウザ入力欄がfile:///D:/xampp/htdocs/・・・等のファイルのアドレスになっている場合はPHPの動作はしません。
ファイルの文字コードは、UTF-8にします。
ファイル名を入力するファイル(index.php)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<form action="download.php" method="post">
<p><label for="text1">URLを入力してください:</label></p>
<input type="text" id="text1" name="text1" style="width:300px;">
<button type="submit">ボタン</button>
</form>
</body>
</html>
8行目は、methodでpost方式を指定し、actionで送信先(download.php)を指定しています。
10行目は、テキストボックスです。画面から文字を入力します。
11行目は、送信ボタンです。type=submitのボタンを押すと値が送信されます。
ダウンロードを行うファイル(download.php)
<?php
error_reporting(E_WARNING);
set_error_handler(function($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});
$url = $_POST['text1'];
$filename = basename($url);
$savePath = 'D:\work\\' . $filename;
try{
$result = file_put_contents($savePath, file_get_contents($url));
$moji = 'ダウンロードが成功しました。';
}catch(ErrorException $e){
$moji = 'ダウンロードに失敗しました。';
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>result</title>
</head>
<body>
<p><?= $moji ?></p>
</body>
</html>
2~5行目は、Warningを14行目のcatchで取得できるようにしています。
7行目の$_POST['text1']のtext1は、index.phpのinputタグのnameで指定された値です。
9行目は、D:workフォルダにファイルを配置します。
関連の記事