
계속 안되서 이미지 파일만 따로 프로젝트를 만들어서 디버깅 하고있는데, 원래 주소 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 도움말 참조
