Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- dfs
- 종만북
- 백준
- C
- String
- JavaScript
- greedy
- Cleancode
- Algospot
- php
- web
- BFS
- 따배씨
- C언어
- 따라하며 배우는 C언어
- 인프런
- graph
- udemy
- server
- 생활코딩
- programmers
- sorting
- Algorithm
- Python
- BOJ
- 따라하면서 배우는 C언어
- BASIC
- 정수론
- Math
- DP
Archives
- Today
- Total
몽상실현개발주의
[생활코딩] 11.5 파일 업로드를 위한 form ~ 11.7 파일 업로드 - 수신 Application 본문
Language/php
[생활코딩] 11.5 파일 업로드를 위한 form ~ 11.7 파일 업로드 - 수신 Application
migrationArc 2021. 5. 13. 18:32
생활코딩 php 강좌
11. 파일
11.5 파일 업로드를 위한 form
<html>
<body>
<form method="POST" action="1.php" enctype="multipart/form-data">
<input type="hidden" value="30000" name="MAX_FILE_SIZE">
<input type="file" name="userfile">
<input type="submit" value="upload">
</form>
</body>
</html>
11.6 파일 업로드 시 HTTP REQUEST
- Request Format
- method : POST
- content-type : multipart/form-data
- data 전송의 encoding 을 multipart/form-data 로 함
- content-Dispotion : 전송할때 설정 했던 사항들, 내용이 담김
- 파일의 경우 2진수로 변환되어 담겨짐
- 요청 결과
- php Application 이 처리
- 처리 결과를 Appatch 가 client에 전송
- Response : html 문서
11.7 파일 업로드 - 수신 Application
<html>
<body>
<form method="POST" action="1.php" enctype="multipart/form-data">
<input type="hidden" value="30000" name="MAX_FILE_SIZE">
<input type="file" name="userfile">
<input type="submit" value="upload">
</form>
</body>
</html>
- file upload page
// 1.php
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
ini_set("display_errors", "1");
$uploaddir = '\Users\leejuho\Sites\studyPhp\upload\file\\';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)){
echo "파일이 유효하고, 성공적으로 업로드 되었습니다.";
}else{
print "파일 업로드 공격의 가능성이 있습니다!\n";
}
echo '자세한 디버깅 정보 입니다:';
print_r($_FILES);
echo '</pre>';
?>
<img src="file/<?=$_FILES['userfile']['name']?>">
</body>
</html>
- ini_set() : php 설정을 runtime 으로 지정
- runtime 설정이 아닐 시, php.ini 에서 지정된 설정으로 실행
- ini_set("display_errors", "1") : desplay_errors 옵션을 On
- $_FILES 변수 안에 upload 된 file 정보가 저장됨
- $uploaddir : 임시 디렉토리에서 옮겨서 저장할 디렉토리 경로 지정
- $uploadfile : "파일이 저장되어야 할 위치 + 파일명" 까지 파일 전체 경로
- basename(파일 명) : 문자열에서 경로를 표시하는 부분을 없애고 파일명만 추출 하는 함수
- 보안을 위하여 파일을 가져다 사용 할 때, 꼭 사용해야 함
- 파일 이름에 경로 정보가 포함되어 있으면 잠재적으로 보안 이슈가 발생할 수 있음
- move_uploaded_file(임시 저장 파일 명, 저장될 파일 경로) : 임시 저장된 파일을 실제 파일 디렉토리로 이동하여 저장하는 함수
<html>
<head>
<meta charset="utf-8">
</head>
<body data-new-gr-c-s-check-loaded="14.1010.0" data-gr-ext-installed="">
<text>
array(1) {
["userfile"]=>
array(5) {
["name"]=>
string(9) "image.png"
["type"]=> string(5) "image/png"
["tmp_name"]=>
string(26) "/private/var/tmp/phpNb94zz"
["error"]=>
int(0)
["size"]=>
int(14005)
}
}
</text>
</body>
</html>
- $_FILES
- file 이 복수가 전송 될 수 있기 때문에, Array (연관 배열) 형태를 취함
- userfile : html form 에서 지정한 input 의 name
- name : file 이름
- type : file type
- tmp_name : 임시 저장 파일 이름 명
- client 에서 server 로 file 을 전송하면 자동으로 server 의 임시 directory 안에 저장됨
- 임시 directory 안에 저장된 file 을 프로그래밍 적으로 이동 시켜야 저장이 완료 됨
- error : file upload 중 발생하는 error 출력
- size : upload 된 file size
이 글의 모든 사진과 내용의 출처는 생활코딩에 있음을 알려드립니다.
'Language > php' 카테고리의 다른 글
[생활코딩] 13.1 정규표현식 소개 (0) | 2021.05.18 |
---|---|
[생활코딩] 12. 이미지 다루기 (0) | 2021.05.18 |
[생활코딩] 11.1 php 파일 제어 ~ 11.4 디렉토리 제어하기 (0) | 2021.05.13 |
[생활코딩] 10.1 include 와 require ~ 10.2 namespace (0) | 2021.05.12 |
[생활코딩] 9.1 배열의 문법 ~ 9.4 연관 배열 (0) | 2021.05.11 |
Comments