Step-by-Step

[Spring] 13. 프로젝트 구조 변경 (feat. Flask) 본문

프로젝트/Eggo (Mobile App)

[Spring] 13. 프로젝트 구조 변경 (feat. Flask)

희주(KHJ) 2022. 6. 21. 12:33

이전에 DB에 사진을 BLOB로 저장했다가, Python에서 열어서 사용하는 코드를 작성하였다.

https://smile-development.tistory.com/70

 

[Spring] 10. DB에 이미지 저장 - BLOB (+ Python에서 열기)

앱을 통해 사용자가 문서를 촬영하면 Python에서 문서를 스캔한 값을 돌려줘야 한다 근데 현재 Android / Spring / Python 각각 다른 팀원이 구현중이다! 그럼 우선 파일을 직접. DB에 저장해야 하는데, BL

smile-development.tistory.com

근데 중요한 것은 Android에서 사진이 넘어오지 않는다....

Spring에서 Multipartsfile로 받고 Android에서 Multipart에 @Body 어노테이션을 붙여서 보냈는데

요청이 들어오지 않아서 일주일동안 애먹었던거같다.

그래서 그냥 Jupyter에서 Flask를 이용하여 서버를 뚫기로 하였다!

 

인공지능 부분이 오래걸려서, 그나마 컨트롤러에 익숙한 내가 작성하였다.

직접 작성하고 열어서 테스트하기도 수월했다

 

[Flask 서버 생성]

from flask import Flask
app = Flask(__name__)

Flask를 받아준다

@app.route('/getPhoto')
def getPhoto():
    print("==GET Photo==")
    try : 
        conn = pymysql.connect("--DB--")
        cursor = conn.cursor()
        
        sql = 'SELECT * FROM photo where ---'
        cursor.execute(sql)
        photo_data = cursor.fetchall()
        data_io = io.BytesIO(photo_data[0][0])
        img = Image.open(data_io)
        
        sql = '''INSERT INTO --- VALUES(----)'''
        cursor.execute(sql)
        conn.commit()
        
        conn.close()
        return "success"
    except Exception as e:
        print(e)
        return "fail"

컨트롤러 작성 부분이며, Sql 이용해서 DB에 insert를 하도록 되어 있는데

이건 Spring과 통신할때 사용하려고 작성해둔 것이고, 나중에는 return문에 데이터를 넣어서 보내주었다.

어차피 안드로이드에서 사용자가 확인버튼을 눌러야 저장하기 때문이다.

대충 전개를 보면 이렇다 스캔한 Data가 사용자가 보기에 맞으면 '등록'버튼을 누르고,

등록 버튼을 누르면 Spring으로 데이터 등록 요청을 하도록 작성하였다.

 

Flask 서버는 내가 열었고, 나머지 사진 전송이랑 받는 부분은 각자 담당하는 친구들이 작성하였다!

Comments