Closed juice500ml closed 8 years ago
이미지 파일만 업로드 가능하게 하라는것이죠?
저 해볼래요~
@juice500ml 헉! 이미지가 아니어도 업로드가 된다구요?! 그게 어떻게 되죠?!?!?!?!?!?!?
@JimJeon 넵! 이게 쉬운이슈이기를 빌빌빌며
@minhoryang
photo.html : <INPUT TYPE=FILE NAME="upfile" accept="image/*"><BR>
photo.py : file = request.files['upfile']
여기서 accept부분은 default 선택만 하게 하고, All Files를 선택해서 업로드하면 막는 부분이 현재는 없습니당~
오! 그렇네요!! 그럼 저장한 다음, 그 파일이 무슨 사진인지 imghdr에게 물어보고 맞으면 db에 넣어주고 서빙하면 된다는 거겠죠? (imghdr이 저장된 파일을 필요로 하네용 ;ㅅ;)
잘부탁드려요. imghdr덕분에 쉽게 풀리는 문제가 되겠어요!
@minhoryang 질문1. client side에서는 아직 힘든 것 같아요! http://stackoverflow.com/questions/1561847/html-how-to-limit-file-upload-to-be-only-images
질문3. https://developer.mozilla.org/en-US/docs/Web/CSS/background-image If a specified image cannot be drawn (for example, when the file denoted by the specified URI cannot be loaded), browsers handle it as they would a none value.
None Value로 들어가게 되어 그 부분은 안전해보입니당~
흐엏... 엄청난 내용들이 늘어났네요 정독하고 작업하도록 하겠습니당~
@JimJeon 처음 언급된 방법으로 하면 모두 해결되는 것으로 보입니다! 얼른 고쳐주세용!
일단 만들어봤는데 너무 쉽게 끝나서 두렵습니다.... 분명 무언가 빼먹은거 같은데?????
(.c) 파일의 확장자를 이미지 파일(png)로 수정해서 업로드를 시도해보았는데 이미지 파일이 아니라고 굉장히 잘 알아차리더군요... 왜 되는지 모르는데 잘 되는 매우 위험한 코드입니다..... 8ㅅ8
imghdr이 작동하는 방식은, 파일의 첫 n바이트를 읽어서, png라면(jpg라면, ...) 마땅히 있어야할 바이트가 있는지 검사합니다. 좋죠? 모든 파일을 지원하는 libmagic이라는것도있어요!
오 굉장한 라이브러리였군요. 단순히 확장자를 검사하는게 아니라 확장자마다 가지는 특성을 검사하는거였네요.
방금 시도해봤는데 gif를 지원하니까 움짤도 프로필로 등록가능해요! gif까지는 확장자 지원하게 해도 괜찮을거 같아요!
움짤 좋닼ㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ움짤 돈받죠?ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
if imghdr.what(file) == 'gif': Money.collect( GIF_PRICE )
gif지원한다고 광고하죠? gif까지 4개만 해서 넣어주세요 지금 바로 머지하죠!
오오 넵!
어라... 왜 issue 57 branch는 아무것도 안되어있고 issue 44 branch에 issue 57 수정사항이 올라가 있을까요? ㅠㅅㅠ
git checkout 을 통해 issue 57 branch로 이동하신다음 두 커밋을 issue 57로 옮겨볼게요
git checkout 이슈57브랜치이름
git cherry-pick 97ccfa16c5981badadec29fe0a1e270518459c29
git cherry-pick bed13315d9f4ac47b15d39f2b2e95c28e3c8b87e
git push origin 이슈57브랜치이름
(저 커밋들의 ID는 git log명령에서 확인할 수 있어요)
Issue 44쪽 정리는 그쪽 리뷰가 끝나고 다시 도와드릴게요!
On branch issue_44_withdrawal You are currently cherry-picking commit bed1331.
nothing to commit, working directory clean The previous cherry-pick is now empty, possibly due to conflict resolution. If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git reset'
라는 메세지를 받았습니다
git log
좀요. ;ㅅ;
앗 제가 숫자를 잘못썻어용. 다시 위에 명령을 순서대로 해보시겠어용? (아마 그리고 방금 명령을 통해서 44쪽은 꼬여있을거에요 ;ㅅ;ㅠ)
네! git log는 필요 없으신거죠?? 추출중이었는데 ㅎㅎ;;;
네 해보죠!
(3.5.1-awesometitle) irregular@raspberrypi:~/AwesomeTitle $ git cherry-pick 97ccfa16c5981badadec29fe0a1e270518459c29
error: cherry-pick is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm
흐어... 아직 push 는 안했는데 fail이 가득떠서.. 8ㅅ8
히히
git status
좀요!
그리고 git log
(첫 20줄정도?) 좀요!
git status에는 photo가 바뀌었다고 나오고
이 부분이 생겼어요
git log:
commit a5536d3a62ca9dd22c3be51d757adb910bf6e093 Author: JimJeon irregular@sogang.ac.kr Date: Sat Mar 5 03:08:47 2016 +0900
issue #44 updated
commit bed13315d9f4ac47b15d39f2b2e95c28e3c8b87e Author: JimJeon irregular@sogang.ac.kr Date: Sat Mar 5 02:57:47 2016 +0900
issue #57 support gif, png, jpg, and jpeg
commit 64171454703426319a8f535f3f808d14d332bc60 Author: JimJeon irregular@sogang.ac.kr Date: Sat Mar 5 02:00:38 2016 +0900
issue #44 fixes and comments
commit a2e1e49d3e104df9fb7de62a4a8e010218e5fdb1 Merge: 97ccfa1 3fa2909 Author: JimJeon irregular@sogang.ac.kr Date: Sat Mar 5 01:54:38 2016 +0900
issue #44 fixes and comments
commit 97ccfa16c5981badadec29fe0a1e270518459c29 Author: JimJeon irregular@sogang.ac.kr Date: Sat Mar 5 01:36:33 2016 +0900
issue #57 이미지 파일이 아니면 에러!
commit ca6915e7f1084d11158e6c626667c0ace52442c8 Merge: 49a9ad2 e989a28 Author: JimJeon irregular@sogang.ac.kr Date: Sat Mar 5 01:30:46 2016 +0900
Merge branch 'master' of http://github.com/minhoryang/AwesomeTitle into issue_44_withdrawal
현재 어떤 브랜치인지 알려주시겠어용?
git branch
현재 issue_44_withdrawal 브랜치에 있습니다!
그럼 이슈 57 브랜치의 이름은 뭐로정했어요?
git branch
보여주시면 현재 있는 모든 브랜치들과 지금 자신이 있는 브랜치가 보여요
git status
의 첫줄도 지금 자신이 있는 브랜치를 볼 수 있어요.
브랜치를 넘어가는건 git checkout 브랜치이름
이에요.
브랜치를 생성할 땐 git branch 새브랜치이름
이구요 (생성하는 시점의 브랜치를 기점으로 가지가 쳐지는거에요)
issue 57은 issue_57onlyphoto라고 정했는데 지금까지 57에서 작업한게 아니라 44에서 작업하거를 깨닫고 아까 git branch -d issue... 으로 삭제했어요
새로 만들죠
# 새 브랜치를 만들기 전에 최신 버전을 기준으로 만들기 위해 master로 이동
git checkout master
# 최신버전 받기
git pull
# 최신버전을 기준으로 새 브랜치 생성
git branch issue_57_onlyphoto
# 새 브랜치로 이동
git checkout issue_57_onlyphoto
# 지난번 작업본 가지고오기
git cherry-pick 97ccfa16c5981badadec29fe0a1e270518459c29
git cherry-pick bed13315d9f4ac47b15d39f2b2e95c28e3c8b87e
# 서버에 전송!
git push origin issue_57_onlyphoto
아마 첫줄에서 에러가 날 수도 있을텐데... 그러면 git checkout -f master
를 시도해보세욧
네! 완료했습니다!
예아!
오오 이쪽으로 왔다!
cherry가 다른 곳에 있는 commit을 현재 브랜치로 옮겨오는 명령인가요?
cherry-pick은 다른 브랜치에 있는 좋은 커밋을 하나씩 땡겨오는겁니다 :) https://ko.wikipedia.org/wiki/체리피커 https://namu.wiki/w/체리피킹
photo.py의
file = request.files['upfile']
if not file:
return render_template(
"_error.html",
_error__msg="이미지를 업로드하지 않았습니다.",
), 400
여기서 고치면 됩니다.https://docs.python.org/2/library/imghdr.html 얘를 쓰면 쉽습니다!