커뮤니티
포인트
로딩중
쿠폰
내 강의실
국비 신청 내역
수강권
증명서
숙제 피드백
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
몽고디비에 이미지 올리기
[왕초보] 비개발자를 위한, 웹개발 종합반 (프로그래밍 실무, 풀스택)
4주차
북마크
박*눔
댓글
7
추천
0
조회수
18
조회수
18
답변 완료

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


취소
 공유
취소
댓글 0
댓글 알림
나의얼굴