본문 바로가기

Developing/Python

Python - 파일 업로드를 구현해 보자.

간단하게 웹 서버에 파일을 업로드 할 수 있는 파이썬 스크립트를 만들어 보자.


앞서, PHP는 아래와 비슷하게 구성되어야 한다. (제타위키 참고)


<upload.php>


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
 
// 설정
$uploads_dir = './uploads';
$allowed_ext = array('jpg','jpeg','png','gif');
 
// 변수 정리
$error = $_FILES['myfile']['error'];
$name = $_FILES['myfile']['name'];
$ext = array_pop(explode('.'$name));
 
// 오류 확인
if$error != UPLOAD_ERR_OK ) {
    switch$error ) {
        case UPLOAD_ERR_INI_SIZE:
        case UPLOAD_ERR_FORM_SIZE:
            echo "파일이 너무 큽니다. ($error)";
            break;
        case UPLOAD_ERR_NO_FILE:
            echo "파일이 첨부되지 않았습니다. ($error)";
            break;
        default:
            echo "파일이 제대로 업로드되지 않았습니다. ($error)";
    }
    exit;
}
 
// 확장자 확인
if!in_array($ext$allowed_ext) ) {
    echo "허용되지 않는 확장자입니다.";
    exit;
}
 
// 파일 이동
move_uploaded_file( $_FILES['myfile']['tmp_name'], "$uploads_dir/$name");
 
// 파일 정보 출력
echo "<h2>파일 정보</h2>
    <ul>
        <li>파일명: $name</li>
        <li>확장자: $ext</li>
        <li>파일형식: {$_FILES['myfile']['type']}</li>
        <li>파일크기: {$_FILES['myfile']['size']} 바이트</li>
    </ul>";
?>
cs





업로드 폼을 파이썬으로 옮긴 건 아래와 같다.


forexample.txt는 upload.py와 동일한 위치에 있어야 한다.


<upload.py>


1
2
3
4
5
6
7
8
9
import requests
 
try:
    url = 'http://thisisyourserver/upload.php'
    files = {'myfile'open('forexample.txt''rb')}
    r = requests.post(url, files=files)
    print(r.text)
except:
    print("")
cs