본문 바로가기

TIL

내일배움캠프 4기_Flask image file 17일차 TIL

728x90

내일배움캠프 4기_Flask image file 17일차 TIL

 


Flask image file 받아 넣기

 

static/imges 파일

 

📄 signup.html <body>

    <form id="ocr_form" action="http://localhost:5000/users/sign_up" method="POST" enctype="multipart/form-data">
        <input type="text" class="upload-name" disabled>
        <label for="file">파일찾기</label>
        <input type="file" id="file" name="file">
    </form>

action 부분과 name 부분 유의해야 한다!!

 

 

📄 signup.html <script>

    <script>
        function save_users_info() {
            let email = $('#email').val();
            let password = $("#password").val();
            // let password2 = $("#password2").val();
            let name = $("#name").val();

            let file = $("#file")[0].files[0];
            let form_data = new FormData();
            console.log(file);

            form_data.append("file_give", file);
            form_data.append("email_give", email);
            form_data.append("password_give", password);
            // form_data.append("password2_give", password2);
            form_data.append("name_give", name);

            $.ajax({
                type: "POST",
                url: '/users/sign_up',
                data: form_data,
                cache: false,
                contentType: false,
                processData: false,
                success: function (response) {
                    alert('가입이 완료되었습니다!')
                    alert(response["msg"])
                    window.location.href = '/login'
                }
            });
        }


    </script>

📄 app.py

# flask, flask-jwt-extended, pymysql 라이브러리 설치
from flask import Flask, render_template, request, jsonify, redirect, url_for

# local sql 연결
import pymysql

# 유효기간 및 작성 날짜 정보
from datetime import datetime, timedelta

# client 통신 할때 형식 jsonquery
import json


@app.route('/users/sign_up', methods=['POST'])
def save_users_info():
	email_receive = request.form['email_give']
	password_receive = request.form['password_give']
	# password2_receive = request.form['password2_give']
	name_receive = request.form['name_give']

	file = request.files["file_give"]
	print(file)
	extension = file.filename.split('.')[-1]
	today = datetime.now()
	mytime = today.strftime("%Y-%m-%d-%H-%M-%S")
	filename = f'file-{mytime}'
	save_to = f'{filename}.{extension}'
	file.save(f'static/images/{save_to}')
	print(save_to)

	db = pymysql.connect(host='localhost', user='root', db='flask_test', password='12345678', charset='utf8')
	curs = db.cursor()

	sql = """
		insert into users (email, pw, name, regrate, filename)
         values (%s,%s,%s,%s,%s)
		"""

	curs.execute(sql, (email_receive, password_receive, name_receive, mytime, save_to))

	users_result = curs.fetchall()
	# print(users_result[0][1] != password_receive)

	json_str = json.dumps(users_result, indent=4, sort_keys=True, default=str)
	db.commit()
	db.close()

	return jsonify({"result":"success", 'msg':'회원가입 완료!'})

파일명은 나중에 관리하기 편하게 지금 현재 시간을 파일명으로 들어가도록 했다.


DBeaver

DB


오늘 이 등록된 값들을 마이페이지 상에 포스팅하는것까지 해보고 싶었는데! ㅠㅠㅠ

쿠키값 이용해 로그인한 유저만 접근

RESTful URI를 활용해보고 싶은데, 이해가 잘 되지 않는다..

지금 내 머리속으로 구현 가능한 S(Server)와 C(Client) 통신을 생각해봤다.

내일 이대로 구현해보고 수정하는것까지 해봐야 겠다!!!

 

주요기능이 다 구현되면 세부적으로 Password 두개 다 일치해야 회원가입되는거랑

email형식에 맞게 입력되지 않을 경우 회원가입 못하는것까지 해봐야겠다.