Я пытался использовать компонент загрузки файлов в стиле ajax (например, компонент загрузки файлов dojox) с механизмом приложений Google и имел индикатор выполнения.
Со стороны javascript все хорошо, но мне интересно, как организовать вещи на стороне сервера?
Возможно ли получить доступ к данным во время их загрузки в Google App Engine, возможно, с помощью BaseHTTPServer? Я мог бы тогда опросить это от клиента.
Даже если невозможно было выполнить процесс, по крайней мере, было бы замечательно иметь возможность завершить большой файл и дать пользователю знать, что он слишком большой, не заставляя пользователя загружать 1 МБ (ограничение движка приложения Google ), а затем выяснить, что это было большим.
Есть несколько похожих вопросов: Подобный вопрос переполнения стека 1 , Аналогичный вопрос переполнения стека 2 .
Следующий код Python для движка приложения Google - это просто основной обработчик сообщений для простой загрузки файла (который работает нормально), но я ищу что-то, что работает на более низком уровне. К тому времени, когда обработчик сообщений получит его, файл уже будет загружен.
В стеке LAMP вы можете опрашивать сценарий на стороне сервера, который наблюдает за увеличением размера временного файла. Когда файл перемещается из временной папки, вы знаете, что он завершен. Используя этот метод, вы можете увидеть прогресс нескольких файлов без использования флэш, я не уверен, как сделать то же самое с движком приложения Google.
class fileupload(webapp.RequestHandler):
"""
"""
def post(self):
if "image" in self.request.arguments():
content = "<html><body>Error</body></html>"
form = self.request.params['image']
logging.info(form)
try:
filename = form.filename
siz = len(form.value)
###--- Show data
logging.info("Filename: %s" % form.filename)
logging.info("Size: %s" % siz)
content = "<html><body>File has been uploaded Name: %s Size: %s</body></html>" % (filename, siz)
logging.info("DONE")
except:
logging.info("Error: bad form or something like that")
logging.info("writing out response")
self.response.out.write(content)