flask를 통해 웹페이지 구축 중 만난 오류!
form태그에서 POST형식으로 값을 보내면 뜨는 오류였다.
검색해보니 서버(flask)에서 받아들여야하는 POST 파라미터가 없을 때 발생한다고 한다.
@bp.route('/check/', methods=['POST', 'GET'])
@login_required
def check():
if request.method == 'POST':
file = request.files["file"]
file.save('./static/ocr_img/'+secure_filename(file.filename))
path = 'C:/projects/blogproject/static/ocr_img/'+file.filename
output = ocr.kakao_ocr(path, appkey).json()
return render_template('ocr/ocr_main.html', output=output)
1. 📝Python, files->form 변경
python file = request.form["file"]
으로 바꿔봤는데 실패
2. 📝Python, False 추가
python file = request.files["file", False]
으로 바꿔봤는데 실패
<form id="ocr_form" action="{{ url_for('ocr.check') }}" method="POST"
enctype="multipart/form-data">
<input type="text" class="upload-name" value="이미지를 업로드 하세요"
placeholder="이미지를 업로드 하세요" disabled >
<label for="file">파일찾기</label>
<input type="file" id="file">
</form>
<label for="ocr_submit">변환하기</label>
<input id="ocr_submit" form="ocr_form" type="submit">
나 같은 경우에는 POST 값 전달을 form태그 밖에서 하고 싶었기 때문에 위와 같이 코드를 작성하였다. 뭐가 틀렸는지 모르고 검색 중에 드디어 찾았다!
업로드된 File이 저장되는 부분은 form 태그 안에 input type="file"
부분이다.
Python에서 file = request.files["file"]
부분에
"file"은 input type="file"
의 id가 아니라 name을 통해 전달 받는다.
📝Python (해결)
file = request.files["여기"]
📝Html (해결)
<form id="ocr_form" action="#" method="POST"enctype="multipart/form-data">
<input type="text" class="upload-name" disabled >
<label for="file">파일찾기</label>
<input type="file" id="file" name="여기">
</form>
<label for="ocr_submit">변환하기</label>
<input id="ocr_submit" form="ocr_form" type="submit">
따라서 업로드된 File이 저장되는 input type="file"
의 name="file"
을 추가한다.
한글로 여기! 라고 적어둔 곳을 똑같이 적어주면 된다! 끝