basename() 함수 - 파일 이름 반환

 

1. basename - 역할

주어진 경로에서 파일 이름만 반환하는 함수.

 

 

1.1. 구문형식

 

basename(경로 , 접미사)

 

접미사가 입력되면 파일 이름에서 해당하는 접미사는 제거됨

 

 

 

2. basename - 예제

 

2.1. 코드

<body>
<?php
    
    $test_path = "/home/work/menu/test.php";
    
    echo basename ($test_path);
    echo "<br>";
    echo basename($test_path,".php");
?>
</body>

 

 

2.2. 결과화면

 

 

2.3. 설명

test_path는 경로를 나타내고 있고 basename() 함수를 통하여 파일 이름만 반환하고 있다.



 

 

참고 :

https://devjhs.tistory.com/211

'Web Programming Language > PHP' 카테고리의 다른 글

PHP) readfile() 함수  (0) 2021.01.15
PHP) HTTP Response Header - Content-Disposition 속성  (0) 2021.01.15
PHP) HTTP Header - MIME-Type, Content-Type  (0) 2021.01.14
PHP) shell_exec() 함수  (0) 2020.11.05
PHP) system() 함수  (0) 2020.11.05

함수설명 :

readfile 함수는 파일을 읽은 후, 출력을 합니다.

 

반환값 :

이 함수는 성공하거나 실패할 경우에 읽은 바이트 수를 반환합니다.

 

기타 :

함수 이름앞에 @를 붙이면, 출력 오류를 숨길 수 있습니다.

 

정의 : 

readfile(filename)

 

filename : 파일의 이름을 입력받습니다.

 

<?php
$file = '/usr/share/apache2/icons/ubuntu-logo.png';
if( !file_exists($file) ) {
	echo "파일이 없습니다.";
	exit;
}
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));

readfile($file);

 

 

이 함수를 실행하면,

해당 파일의 내용이 모두 웹 브라우저에 출력된다.

 

특정 파일의 내용을 출력할 때 사용할 수 있지만, 실제로는 해당 파일의 다운로드를 구현하기 위해 많이 사용된다.

 

일반적으로는, 파일의 링크를 연결해두고 클릭하면 다운로드 창이 뜨게 되지만, txt문서나 이미지 파일의 경우 웹 브라우저에서 지원하는 형식의 파일이면 파일 다운로드 창이 뜨지 않고 웹 브라우저에 바로 보여지게 된다.

 

이처럼 웹 브라우저에서 보이는 것을 방지하고 파일 다운로드 창이 뜨도록 하려면 파일의 형식을 속여야 한다.

 

 

 

 

출처 :

m.blog.naver.com/PostView.nhn?blogId=writer0713&logNo=220191525288&proxyReferer=https:%2F%2Fwww.google.com%2F

HTTP Content-Disposition란

 

Disposition이란 기질, 성향, 배치, 배열 이란 뜻이다.

 

HTTP Response Header에 들어가는 Content-DispositionHTTP Response Body에 오는 컨텐츠의 기질/성향을 알려주는 속성이다.

 

default 값은 inline으로 web에 전달되는 data라고 생각하면 된다.

 

특수한 경우는 Content-Disposition에 attachment 속성을 주는 경우로, 이때 filename 속성 함께 주게 되면 Body에 오는 값을 다운로드 받으라는 뜻이 된다.

 

filename 속성 : 파일 출력을 할 때, 어떠한 파일명으로 저장할 것인지 설정하는 것.

 

Content-Disposition: attachment; filename="hello.jpg"

 

"는 서버측에서 header를 설정할 때 붙이지 않아도 되는 듯 하다

 

 

 

 

 

 

 

 

 

 

 

 

http에서 응답 헤더에 content-dispostion을 명시하여

브라우져로 하여금 전송된 파일을 디스크에 직접 다운로드 받을 것인지 혹은 브라우져로 보여줄 것인지 설정할 수 있다.

Content-Disposition: inline

 

Content-disposition: inline

브라우저 인식 파일확장자를 가진 파일들에 대해서는 웹브라우저 상에서 바로 파일을 자동으로 보여줄 수 있어서, 의미상인 멀티파트 메시지를 표현하는데 있다.

그 외의 파일들에 대해서는 "파일 다운로드" 대화상자가 뜨도록 하는 헤더속성이다.

 

 

속성이 inline인 경우 브라우져에서 응답을 받으면 아래와 같이 브라우져에서 바로 보여준다.

Content-Disposition: attachment

 

Content-disposition: attachment
브라우저 인식 파일확장자를 포함하여 모든 확장자의 파일들에 대해,

다운로드시 무조건 "파일 다운로드" 대화상자가 뜨도록 하는 헤더속성이라 할 수 있다.

 

이때, filename 속성 함께 주게 되면 Body에 오는 값을 다운로드 받으라는 뜻이 된다.

 

filename 속성 : 파일 출력을 할 때, 어떠한 파일명으로 저장할 것인지 설정하는 것.

 

 

속성이 attachment인 경우 아래와 같이 다운로드창이 뜨게 된다.

 

 

 

 

출처 :

lannstark.tistory.com/8

 

[웹/HTTP] 응답 헤더의 Content-Disposition 속성작성자 호로요이이

 

https://knight76.tistory.com/entry/30042769264 [김용환 블로그(2004-2020)]

 

 

 

'Web Programming Language > PHP' 카테고리의 다른 글

PHP) basename() 함수 - 파일 이름 반환  (0) 2021.07.01
PHP) readfile() 함수  (0) 2021.01.15
PHP) HTTP Header - MIME-Type, Content-Type  (0) 2021.01.14
PHP) shell_exec() 함수  (0) 2020.11.05
PHP) system() 함수  (0) 2020.11.05

content-type이란 

간단히 말해 보내는 자원의 형식을 명시하기 위해 헤더에 실리는 정보이다. 이 값은 표준 mime-type중의 하나이다.

 

MIME-Type, Content-Type이란 무엇인가?

 

우리가 클라이언트 브라우저로 어떤 자원을 보낼때(어떤 형태의 파일이나 문서 등), 웹 서버는 일련의 HTTP 헤더로 파일이나 자원을 포함하는 바이트의 Stream을 앞에 보낸다. 이런 헤더는 클라이언트에게 웹 서버와 커뮤니케이션 세부사항을 묘사한다. 예를 들어, 헤더는 사용되고 있는 웹 서버의 소프트웨어의 타입, 서버의 날짜와 시간, HTTP 프로토콜, 사용중인 커넥션 타입등을 지정한다. 헤더는 또한 클라이언트가 이런 가상 패스나 도메인에 대해서 저장해야 할 쿠키를 포함한다.

이와 관련해서 가장 중요한 것은 헤더는 또한 보내지는 자원의 content 타입이 포함되는 것이다. 이것은 Content-Type 헤더에 의해 지정되는데, 이 값은 표준 MIME-Type의 하나이다. MIME-Type을 살펴봄으로써 브라우져는 데이터를 나타내는데 어떤 종류의 파일 Stream인지를 알고 있다. HTML 페이지에 MIME-Type을 가진다.

 

Content-Type의 종류

1) Multipart Related MIME 타입

  - Content-Type: Multipart/related                        <-- 기본형태

  - Content-Type: Application/X-FixedRecord

 

 

2) XML Media의 타입

 - Content-Type: text/xml

 - Content-Type: Application/xml

 - Content-Type: Application/xml-external-parsed-entity

 - Content-Type: Application/xml-dtd

 - Content-Type: Application/mathtml+xml

 - Content-Type: Application/xslt+xml

 

 

3) Application의 타입 

 - Content-Type: Application/EDI-X12                      <--  Defined in RFC 1767 

 - Content-Type: Application/EDIFACT                     <--  Defined in RFC 1767 

 - Content-Type: Application/javascript                 <-- Defined in RFC 4329 

 - Content-Type: Application/octet-stream          <-- 디폴트 미디어 타입은 운영체제 종종 실행파일, 다운로드를 의미

 - Content-Type: Application/ogg                           <-- Defined in RFC 3534

 - Content-Type: Application/x-shockwave-flash         <-- Adobe Flash files

 - Content-Type: Application/json                         <-- JavaScript Object Notation JSON; Defined in RFC 4627 

 - Content-Type: Application/x-www-form-urlencode   <-- HTML Form 형태

 

* x-www-form-urlencode와 multipart/form-data은 둘다 폼 형태이지만 x-www-form-urlencode은 대용량 바이너리 테이터를 전송하기에 비능률적이기 때문에 대부분 첨부파일은 multipart/form-data를 사용하게 된다.

 

 

4) 오디오 타입

- Content-Type: audio/mpeg                                   <-- MP3 or other MPEG audio

- Content-Type: audio/x-ms-wma                             <-- Windows Media Audio;

- Content-Type: audio/vnd.rn-realaudio                     <--  RealAudio;  등등 

 

 

5) Multipart 타입

- Content-Type: multipart/mixed: MIME E-mail; 

- Content-Type: multipart/alternative: MIME E-mail;

- Content-Type: multipart/related: MIME E-mail           <-- Defined in RFC 2387 and used by MHTML(HTML mail) 

- Content-Type: multipart/formed-data                      <-- 파일 첨부

 

 

6) TEXT 타입 

- Content-Type: text/css

- Content-Type: text/html

- Content-Type: text/javascript

- Content-Type: text/plain

- Content-Type: text/xml

 

 

7) file 타입

- Content-Type: application/msword                       <-- doc

- Content-Type: application/pdf                             <-- pdf

- Content-Type: application/vnd.ms-excel                <-- xls

- Content-Type: application/x-javascript                  <-- js

- Content-Type: application/zip                             <-- zip

- Content-Type: image/jpeg                                  <-- jpeg, jpg, jpe

- Content-Type: text/css                                       <-- css

- Content-Type: text/html                                     <-- html, htm

- Content-Type: text/plain                                    <-- txt

- Content-Type: text/xml                                      <-- xml

- Content-Type: text/xsl                                       <-- xsl

 

 

 

 

 

 

++)

Content-Type: Application/octet-stream

  • application/octet-stream는 다른 모든 경우를 위한 기본값입니다. 알려지지 않은 파일 타입은 이 타입을 사용해야 합니다. 브라우저들은 이런 파일들을 다룰 때, 사용자를 위험한 동작으로부터 보호하도록 개별적인 주의를 기울여야 합니다.
  • 이 타입은 이진 파일을 위한 기본값입니다. 이 타입은 실제로 잘 알려지지 않은 이진 파일을 의미하므로, 브라우저는 보통 자동으로 실행하지 않거나 실행해야 할지 묻기도 합니다. Content-Disposition 헤더가 값 attachment와 함게 설정되었고 'Save As' 파일을 제안하는지 여부에 따라 브라우저가 그것을 다루게 됩니다.

사용 예)

파일 다운로드 기능에서는 파일 타입(형식)을 일일이 명시할 수 없기에 임의의 파일 타입 형태인, application/octet-stream으로 설정해준다.

 

 

 



출처 :

https://iamawebdeveloper.tistory.com/88 [나는 웹개발자!]

 

developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types

'Web Programming Language > PHP' 카테고리의 다른 글

PHP) readfile() 함수  (0) 2021.01.15
PHP) HTTP Response Header - Content-Disposition 속성  (0) 2021.01.15
PHP) shell_exec() 함수  (0) 2020.11.05
PHP) system() 함수  (0) 2020.11.05
PHP) $SERVER, $_SERVER['PHP_SELF']  (0) 2020.11.05

shell_exec() 함수

쉘을 통해 명령을 실행하고 전체 출력을 문자열로 반환하는 함수.

 

 

함수 형태

shell_exec ( string $cmd ) : string

이 함수는 backtick 연산자와 동일하다.

 

 

파라미터

cmd

실행될 명령

 

 

반환 값

오류가 발생하거나 프로그램이 출력을 생성하지 않을 때, NULL을 반환.

 

 

예시

Example #1 A shell_exec() example

<?php
$output 
shell_exec('ls -lart');
echo 
"<pre>$output</pre>";
?>

 

 

 

출처 :

www.php.net/manual/en/function.shell-exec.php

system() 함수

(PHP 4, PHP 5, PHP 7)

외부 프로그램을 실행하고 출력을 표시하는 함수.

 

함수 형태

system( string $command [, int &$return_var ] ) : string

system()주어진 명령을 실행하고 결과를 출력한다는 점에서 C의 함수과 같다.

또한, system() 호출은 PHP가 서버 모듈로 실행중인 경우, 각 출력 라인 후에 웹 서버의 출력 버퍼를 자동으로

비우려고한다.

명령을 실행하고 명령의 모든 데이터를 간섭없이 직접 전달해야하는 경우 passthru() 함수를 사용하여라.

 

 

파라미터

command

실행될 명령.

 

return_var

return_var 인수가 있으면 실행된 명령의 반환 상태가 이 변수에 기록됨.

 

 

반환 값

성공시, 마지막라인 명령의 결과값을 반환.

실패시, FALSE 반환. 

 

 

예시

Example #1 system() example

<?php
echo '<pre>';

// 셸 명령 "ls"의 모든 결과 출력 및 반환
// $last_line의 마지막 출력 라인. 반환 값 저장
// $retval의 쉘 명령.

$last_line system('ls'$retval);

// 추가 정보 출력.
echo '
</pre>
<hr />Last line of the output: ' 
$last_line '
<hr />Return value: ' 
$retval;
?>

 

 

출처 :

www.php.net/manual/en/function.system.php

+ Recent posts