2
여기 비동기 적으로 파일을 blobstore에 업로드하려고합니다. 다음은 지금까지 한 일이다goog.net.IframeIo를 사용하여 Python의 Blobstore에 파일을 업로드하는 방법?
html 파일
<form id="my_form" enctype="multipart/form-data" method="POST"
action="/partner">
<input type="file" id="my_file" name="my_file"/>
</form>
JS 파일을
my.Project.prototype.onFileUpload = function(e) {
var uploadForm = /** @type {HTMLFormElement} */ (
goog.dom.getElement('my_form'));
var iframeIo = new goog.net.IframeIo();
goog.events.listen(iframeIo, goog.net.EventType.COMPLETE, function() { alert('request complete'); });
iframeIo.sendFromForm(uploadForm);
파이썬 코드
class MyHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
logging.info(self.request) // I can see my file in this line's output
upload_files = self.get_uploads('my_file')
logging.info(upload_files) //upload_files come out to be an empty array
blob_info = upload_files[0]
self.redirect('/partner/serve/%s' % blob_info.key())
Request 객체에 업로드 할 파일을 얻는 방법에 대한 모든 지침. blobstore의 google tutorial에서 제공하는 python 코드는 here입니다.
이제 막혔습니다. 파이썬 코드로 파일을 가져올 수 있다면 업로드 할 수있을 것입니다. 모든 포인터는 매우 유용합니다.
감사합니다,
Mohit
감사 다니엘 템플릿,
<form action="{{ upload_url }}" method="POST" enctype="multipart/form-data">
에있는 것입니다. 샘플 애플리케이션에서 URL을 작성하는 이유는 먼저 사용자가 파일 업로드를 용이하게하기 위해 양식이 작성된 MainHandler에 착륙하기를 원하기 때문입니다. 양식이 표시되면 생성 된 URL이 제공됩니다. 제 경우에는 MainHandler를 원하지 않습니다. 그래서 나는 HTML 형식 자체에 action = "URL"을 가졌다. 또한, 원하는 처리기를 성공적으로 공격 할 수 있습니다. 유일한 문제는 요청 개체에서 파일을 가져 오는 것입니다. 이게 내 문제를 좀 더 분명하게 해주기를 바랍니다. – EMM귀하의 의견을 이해할 수 없습니다. 'create_url'에 의해 반환 된 URL로 POST해야합니다. 그렇지 않으면 업로드가 작동하지 않습니다. AppEngine은 업로드를 처리 한 다음 고유 한 메소드로 전달합니다. –