본문 바로가기
Machin-Learning Project

flask 서버로 이미지 전송하기

by HoneyIT 2020. 11. 8.

AWS EC2에 이미지를 전송하기 위해 flask 서버를 이용하기로 했다.

 

 

from flask import Flask, render_template, request
from werkzeug.utils import secure_filename

app = Flask(__name__)

# 파일 업로드 처리
@app.route('/fileUpload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':

        return 'uploads'

if __name__ == '__main__':
    # 서버 실행
    app.run(host="0.0.0.0", port=8080)

우선 이미지를 받을 수 있는 서버를 만들어 주었다.

 

-코드-

이미지를 전송하는 로컬에서 다음과 같이 request로 저장되어 있는 파일과 날짜 데이터를 보내려 한다.

 

 

@app.route('/fileUpload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['file']	#파일 받기
        d = request.data		#데이터 받기
        print(type(d))
        print(f)
        date=d['date']
        time=d['time']
        # 저장할 경로 + 파일명
        f.save("./static/"+secure_filename(f.filename))
        return 'uploads'

받는 서버에서 파일명과 데이터를 받기 위해 request.files와 data로 받았다.

 

전송에서 데이터를 딕셔너리 형태로 보냈는데 데이터 타입이 잘못되었다고 에러가 뜬다.

넘어오는 값을 확인해보니 d''라고 뜬다 데이터가 넘어오지 않았다.

 

@app.route('/fileUpload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['file']
        d = request.form
        #f=f.split('.jpg')
        date=d['date']
        time=d['time']
        todo_list_dao.insertimg(f.filename.split(".")[0], date, time)
        # 저장할 경로 + 파일명
        f.save("./static/"+secure_filename(f.filename))
        return 'uploads'

data를 request로 받을 때 request.data가 아닌 request.form으로 받아야 한다.

파일명이 확장자를 포함하고 있어서 split으로 '.' 이후의 텍스트를 잘라냈다.

 

def insertimg(iname, idate, itime):
    conn = connection.get_connection()

    sql = '''
        insert into image(iname, idate, itime) values("{}", "{}", "{}")
    '''

    print(sql)

    cursor = conn.cursor()
    ret = cursor.execute(sql.format(iname, idate, itime))

기존에 만들었던 dao의 insertimg 메서드로 이미지에 관련된 정보를 입력해주었다.

 

-이미지-

제대로 데이터가 전송된 것을 확인할 수 있다.

 

해당 날짜를 클릭하면 저장된 이미지가 제대로 뜨는 것을 확인할 수 있다.

'Machin-Learning Project' 카테고리의 다른 글

Mysql 계정 생성 및 권한 부여  (0) 2020.11.14
DB 비밀번호 암호화  (0) 2020.11.11
flask 서버 백그라운드 실행  (0) 2020.11.10
보안된 포트 변경하기  (0) 2020.11.07
서버 구축  (0) 2020.11.03