Posts
Q&A
์๋ ํ์ญ๋๊น ์ด๋ฏธ์ง ํ์ผ ์ ๋ก๋ ๋ถ๋ถ ๊ด๋ จํ์ฌ ์ง๋ฌธ ๋๋ฆฝ๋๋ค!
์ ๊ทธ ์ ๊ฐ ์ง์ ํ BOARD_IMAGE_PATH์ ์ ์ฅ์ด ๋๋ค๋ ๋ง์ด์์ต๋๋ค BOARD_IMAGE_PATH = "G:\\IT_SourceCode\\Python\\images" ๊ฒฝ๋ก๋ ์์ฒ๋ผ ์ง์ ํด๋๊ณ ๊ฒ์๊ธ์ ์์ฑํ ๋ ์ด๋ฏธ์ง๋ฅผ ๋๋๊ทธ์ค ๋๋กญ์ ํ๋ฉด ์ด๋ฏธ์ง๊ฐ ์์ฑ์ค์ ์์ ๋์ค์ง ์์ต๋๋ค ๊ทธ๋ฆฌ๊ณ ์๋ํฐ๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ธ์์ ๋ชปํ๋๊ฒ ๊ฐ์ต๋๋ค ๊ทธ๋๋ก ๊ฒ์๊ธ์ ์์ฑ์๋ฃํ๋ ค๊ณ ํ๋ฉด ๋ด์ฉ์ ์์ฑํ๋ผ๋ ์๋ฌ๋ฉ์์ง๊ฐ ๋ฐ์ํ๋๊ฑธ ๋ณด๋ ์ด๋ฏธ์ง ์ ๋ก๋๊ฐ ๋์ง ์๋๊ฒ ๊ฐ์ต๋๋ค ์ด๋ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ตฌ๊ฐ์ด ๊ธ ์์ฑ ๋์ค ์๋ํฐ๋ฅผ ์ฌ์ฉํ ๋ ์ ๋๋ค. ๋๋๊ทธ์ค ๋๋กญ ํ๋ฉด ์๋ํฐ์๋ ์ด๋ฏธ์ง๊ฐ ๋ณด์ด์ง ์์ต๋๋ค๋ง ์ ๊ฐ ์ ์ฅํ ์ ํจ์ค๊ฒฝ๋ก์๋ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ์ด ๋์ด์์ต๋๋ค ๊ทธ๋ฆฌ๊ณ print๋ ์ ๊ฐ ์ฝ๋ ๋ณต๋ถํ๋ค ์ค์๋ก ๋ฃ์ ์ฝ๋์ ๋๋ค,, ใ ์ด๊ฑด writehtml์ summernote ๋ถ๋ถ ์ฝ๋ ์ฒจ๋ถํ์ต๋๋ค {% extends "main.html" %} {% block contents %} script> $(document).ready(function () { $("#summernote").summernote({ height:300, minheight: null, maxheight: null, lang: "ko-KR", popover: { image: [], link: [], air: [] }, callbacks: { onImageUpload: function(image) { for(var i = 0 ; i image.length ; i++) { uploadImage(image[i]); } } } }); }); function uploadImage(image){ print("") var data = new FormData(); data.append("image", image); $.ajax({ url: "{{url_for('board.upload_image')}}", cache: false, contentType: false, processData: false, data: data, type: "post", success: function(url){ var image = $("(์ฌ์ง)").attr("src", url).css('max-width', "900px"); $("summernote").summernote("insertNode", image[0]); }, error: function(data){ console.log(data); alert(data); } }); } script> script> function checkForm() { if($.trim($("#title").val()) == "") { alert("์ ๋ชฉ์ ์ ๋ ฅํ์ธ์"); $("#title").focus(); return false; } if($.trim($("#summernote").val()) == "") { alert("๋ด์ฉ์ ์ ๋ ฅํ์ธ์"); $("#summernote").focus(); return false; } } ์ด๊ฑด board.py๋ถ๋ถ์ upload_image๋ถ๋ถ ์ฝ๋์ ๋๋ค @blueprint.route("/upload_image", methods=["POST"]) def upload_image(): if request.method == "POST": file = request.files["image"] if file and allowed_file(file.filename): filename = "{}.jpg".format(rand_generator()) savefilepath=os.path.join(app.config["BOARD_IMAGE_PATH"], filename) file.save(savefilepath) return url_for("board.board_images", filename=filename) @blueprint.route("/images/") def board_images(filename): return send_from_directory(app.config["BOARD_IMAGE_PATH"], filename) ํน์ ๋ชฐ๋ผ common.py์ ํ์ผ๊ด๋ จ ์ฝ๋๋ ์ฒจ๋ถํ์ต๋๋ค def allowed_file(filename): return "." in filename and filename.rsplit(".", 1)[1] in ALLOWED_EXTENSIONS def rand_generator(length=8): char=ascii_lowercase + ascii_uppercase + digits return "".join(random.sample(char,length)) ์ด๊ฑด main.html์ javascriptcdn๊ณผ summernote cdn ๋ถ๋ถ์ธ๋ฐ ํน์ ๋ชฐ๋ผ ์ด๊ฒ๋ ์ฒจ๋ถํฉ๋๋ค ใ meta charset="UTF-8"> meta name="viewport" content="width=device-width, initial-scale=1.0"> title>{{title}}title> link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> script src="https://code.jquery.com/jquery-3.5.1.min.js" type="text/javascript">script> script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous">script> script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous">script> link href="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote.min.css" rel="stylesheet"> script src="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote.min.js">script> ์๋ฌด๋ฆฌ ์๊ฐํด๋ write.html๋ถ๋ถ ์๋ํฐ๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ ์์ฑํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์๋ฐ ๋ช ์ผ๊ฐ ์์นญํ๊ณ ํด๋ ๋์ ํ ์๋์ ์ง๋ฌธ ๋๋ฆฝ๋๋ค ใ ใ ๋ก๊ทธ์์ผ๋ก๋ ์ดํด๋ณด์์ต๋๋ค๋ง 127.0.0.1 - - [21/Sep/2020 14:29:53] "POST /board/upload_image HTTP/1.1" 200 - ํ์ผ์๋ฌ 127.0.0.1 - - [21/Sep/2020 14:29:53] "GET /board/images/M9b4Bo0v.jpg HTTP/1.1" 200 - ์ด๋ฏธ์ง ์ ๋ก๋ ์์ฒญ์ ํ๋ฉด ๊ธ ์์ฑ ์๋ํฐ์์๋ ๋ณด์ด์ง ์์ต๋๋ค๋ง ์ง๊ธ์ ์ฌ์ง์ด ์ธ์์ฐฝ์ผ๋ก ๋์ด๊ฐ๋๋ค ๋ค ์ํฉ์ ๋์ผํฉ๋๋ค๋ง ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ ๋ฐ์ง ๋ชปํฉ๋๋ค ์๋ํฐ๊ฐ ํ์ง๋ง ์ ๋ก์ปฌ ํด๋์์๋ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ์ด ๋์ด์๊ตฌ์ ใ ใ
- 1
- 3
- 419
Q&A
2020 6์ 14์ผ ์ง๋ฌธ
์ ๊ณต๋ฐฑ ๋๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ์ด ์๋๋ ๊ฑฐ์๊ตฐ์ ,, ์ด๋ฐ ใ
- 2
- 3
- 662
Q&A
2020 6์ 14์ผ ์ง๋ฌธ
์,,,, ใ ใ ใ ใ ใ ใ ใ ใ ใ ์ ๊ฐ ์์ง ๊ฐ๊ธธ์ด ๋ฉ์๊ตฐ์ ์น์ ํ๊ฒ ์๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ์ฌ์์ฑํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค
- 2
- 3
- 662