-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
file upload and store #4
Comments
E-hard가 붙었지만 얼른 논의해봐야 할 것 같습니다. 가장 요청도 많이 들어오는 기능(?)이기도 하구요. |
근데 이거 왠지 파일업로드가 producer같은거 신경 안써도 자동으로 IO에 안묶이고 될 것같은 삘이 약간 들었어. twisted.web에서 reactor를 직접 건들어야 하는건 너무 지옥이니까 왠지 구현을 해놨을 것 같단 말이지. 적절히 몇기가쯤 되는 애 업로드 해보면서 테스트를 해봐야 할 것 같다. |
어떻게 시도를 해보실 생각이세요? |
로컬에서 큰 파일업로드 시켜보면서 다른 request 처리하나 안하나 확인해볼 생각. 이거 안되면 엔진 뜯어야됨ㅋㅋㅋㅋ |
@TintypeMolly diff --git a/resource/upload.py b/resource/upload.py
new file mode 100644
index 0000000..07d23c1
--- /dev/null
+++ b/resource/upload.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+import cgi
+from exception import Unauthorized
+from twisted.web.server import NOT_DONE_YET
+from helper.resource import YuzukiResource
+
+class Upload(YuzukiResource):
+ def render_POST(self, request):
+ self.headers = request.getAllHeaders()
+ file_form = cgi.FieldStorage(
+ fp = request.content,
+ headers = self.headers,
+ environ = {
+ 'REQUEST_METHOD':'POST',
+ 'CONTENT_TYPE': self.headers['content-type'],
+ }
+ )
+
+ for file in file_form.getlist("filename"):
+ print "???"
+ return "uploaded"
\ No newline at end of file
diff --git a/route.py b/route.py
index 98522cd..141ced9 100644
--- a/route.py
+++ b/route.py
@@ -16,6 +16,7 @@ from resource.profile import Profile
from resource.register import Register
from resource.reply import ReplyParent
from resource.search import Search
+from resource.upload import Upload
from resource.welcome import Welcome
ROUTE = {
@@ -36,5 +37,6 @@ ROUTE = {
"robots.txt": File("static/etc/robots.txt"),
"static": File("static"),
"search": Search(),
+ "upload": Upload(),
"welcome": Welcome(),
}
diff --git a/template/article_write.html b/template/article_write.html
index c25bbc8..cf2dba9 100644
--- a/template/article_write.html
+++ b/template/article_write.html
@@ -28,6 +28,12 @@
<input type="submit" class="btn btn-default" value="완료"/>
</form>
</div>
+
+ <form enctype="multipart/form-data" method="post" action="/upload">
+ <input type="file" name="filename">
+ <input type="submit" class="btn btn-default" value="완료"/>
+ </form>
+
{% endblock %}
{% block script %}
<script> |
응 그럼 엔진 뜯어야됨 |
전 일단 외부 클라우드 파일 업로드 api를 붙이는 것도 하나의 방법이라고 봅니다. (예를 들어 http://docs.rackspace.com/files/api/v1/cf-devguide/content/FormPost-d1a555.html) 구현하실 생각이 있으시면 제대로 논의를 해보겠지만요. |
놀라운 사실을 알아냈는데, 파일 크기 제한은 nginx를 앞단에 쓰고있어서 아무런 의미 없는 고민이었다. nginx가 따로 설정 안하면 최대 req 크기를 1메가로 제한하고 있었다능. nginx proxy를 쓰고있는 이상 이걸 고민할 필요는 없었다는 사실. |
https://github.com/TintypeMolly/Yuzuki/tree/file-upload-example
|
The text was updated successfully, but these errors were encountered: