계속 안되서 이미지 파일만 따로 프로젝트를 만들어서 디버깅 하고있는데, 원래 주소 5006에서 파일 전송 클릭할때마다 5000으로 바껴요..
index.html
<form action="http://localhost:5000/uploader"
method="POST"
enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" />
</form>
<script>function uploading_files(){
let file = files[0]; //실제 파일
let image = files[0].name; //파일명
let desc = $('#input_feed_content').val(); //이미지 밑에 쓴 글
console.log(image)
let formData = new FormData();
formData.append('file_give',file)
formData.append('image_give',image)
formData.append('desc_give',desc)
$.ajax({
type: 'POST',
url: '/create_content',
processData: false,
contentType: false,
data: formData,
success: function (response) {
if (response['result'] == 'success') {
alert(response['msg'])
window.location.href = '/'
} else {
alert(response['msg'])
window.location.reload()
}
},
error: function (err) {
console.log('error:' + err)
}
});
</script>
main.py
from flask import Flask, render_template, request, jsonify from datetime import datetime, date from werkzeug.utils import secure_filename app = Flask(__name__) from pymongo import MongoClient import certifi import gridfs ca = certifi.where() client = MongoClient("mongodb+srv://travel:test@cluster0.wsgqfkz.mongodb.net/?retryWrites=true&w=majority", tlsCAFile=ca) db = client.practice @app.route('/') def home(): return render_template('index.html') @app.route("/create_content", methods=["POST"]) def create_content(): current_time = datetime.now() image_receive = request.form['image_give'] desc_receive = request.form['desc_give'] file = request.files['file_give'] ext = image_receive.split('.')[-1] #확장자 추출 filename = f"{current_time.strftime('%Y%m%d%H%M%S')}.{ext}" save_to = f'static/img/post_contents/{filename}' # 경로지정 file.save(save_to) token_receive = request.cookies.get('mytoken') user = db.citista_users.find_one({'token': token_receive}) user_id = user['username'] content_num = db.citista_contents.find({}, {'_id': False}).collection.estimated_document_count() doc_contents = { 'user_id': user_id, 'post_id': content_num + 1, 'img': image_receive, 'f_name': filename, 'desc': desc_receive, 'timestamp': current_time } db.citista_contents.insert_one(doc_contents) doc_likes = { 'post_id': content_num + 1, 'like': 0 } db.citista_likes.insert_one(doc_likes) return jsonify({'msg':'게시물 생성'}) # 스크립트를 실행하려면 여백의 녹색 버튼을 누릅니다. if __name__ == '__main__': app.run('0.0.0.0', port=5006, debug=True) # https://www.jetbrains.com/help/pycharm/에서 PyCharm 도움말 참조