fopen()
인자구분 |
설명 |
r |
파일을 읽기전용 모드로 연다 |
w |
파일을 쓰기전용 모드로 연다 (기존 파일의 내용은 모두 삭제) |
a |
파일을 쓰기전용 모드로 연다 (기존 파일의 내용이 유지) 파일포인터는 기존 파일내용의 맨 끝에 위치 |
x |
새로운 파일을 쓰기전용 모드로 연다(같은 이름의 파일이 있을경우 False 또는 error 를 발생) |
r+ |
파일을 읽거나 쓸 수 있는 모드로 연다(파일포인터는 맨 처음에 위치) |
w+ |
파일을 읽거나 쓸 수 있는 모드로 연다(기존 파일의 내용은 삭제) |
a+ |
파일을 읽거나 쓸 수 있는 모드로 연다(기존 파일 내용은 유지) |
x+ |
새로운 파일을 읽기/쓰기 모드로 연다( 기존에 파일이 있을경우 False/error 발생 |
<?php
$data = "";
// 파일 쓰기
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$data = $_POST["data"];
try {
// 파일이 있는 경우는 if의 안으로 들어가고 없는 경우는 fopen을 실행하지 않는다
if (@$handle = fopen('data.txt', 'a')) {
fwrite($handle, $data . "\r\n");
}
} catch (Exception $e) {
print_r($e);
} finally{
// I/O 리소스는 반드시 close를 해야한다.
@fclose($handle);
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<form method="POST">
<input type="text" name="data" value="<?=$data?>">
<input type="submit">
</form>
<?php
$fname = "data.txt";
echo file_get_contents($fname)."<br>";
$fp = fopen($fname, "r");
echo fread($fp, filesize($fname))."<br>";
$fp = fopen($fname, "r");
echo stream_get_contents($fp, filesize($fname)); // mmap 기반
echo "<br>";
$fp = fopen($fname, "r");
while(!feof($fp)){
echo fgets($fp)."<br/>";
}
fclose($fp);
?>
업로드/다운로드
upload.php
<form method="post" action="uplpad_result.php" enctype="multipart/form-data">
<input type="file" name="upload"><hr>
<input type="text" name="title"><br>
<input type="textarea" name="content">
<input type="submit" value="send">
</form>
upload_result.php
<?php
$uploadfile = $_FILES['upload']['name'];
$fPath="./uploads";
if(move_uploaded_file($_FILES['upload']['tmp_name'],"$fPath/$uploadfile")){
echo "title : {$_POST['title']}<br>";
echo "content : {$_POST['content']}<br>";
echo "<img src =$fPath/{$_FILES['upload']['name']}> <p>";
echo "1. file name : {$_FILES['upload']['name']}<br/>";
echo "2. file type : {$_FILES['upload']['type']}<br/>";
echo "3. file size : {$_FILES['upload']['size']} byte <br />";
echo "4. temporary file size : {$_FILES['upload']['size']}<br />";
} else {
echo "파일 업로드 실패 !! 다시 시도해주세요.<br />";
}
?>
<a href="down.php?file=<?php echo "{$_FILES['upload']['name']}"; ?>">다운받기</a>
down.php
<?php
$req = $_GET['file'];
echo $req;
$file = './uploads/$req'; // 파일의 전체 경로
$file_name = $req ; // 저장될 파일 이름
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $file_name . '"');
header('Content-Transfer-Encoding: binary');
header('Content-length: ' . filesize($file));
header('Expires: 0');
header("Pragma: public");
$fp = fopen($file, 'rb');
fpassthru($fp);
fclose($fp);
?>