Играть!+ GAE + Загрузка файла - PullRequest
2 голосов
/ 15 июня 2011

Обычно в платформе Play, когда вы загружаете файл, он отображается как объект File в контроллер, а сам файл сохраняется в папке tmp. В GAE это не будет работать, потому что GAE не разрешает запись в файловую систему.

Как загрузить файл и получить доступ к потоку непосредственно в контроллере?

Ответы [ 2 ]

3 голосов
/ 16 июня 2011

Так что я разобрался с решением. В контроллере вместо передачи объекта File вы просто передаете byte [] и используете ByeArrayInputStream, чтобы получить его в более удобной форме. В моем случае мне нужно было передать данные файла в синтаксический анализатор CSV, который принимает InputStream.

0 голосов
/ 15 июня 2011

Я также не знаком с инфраструктурой воспроизведения, но в целом для многокомпонентных запросов (например, загрузки файлов),

  1. данные из входного потока записываются во временный файл в локальной файловой системе, еслиразмер ввода достаточно большой
  2. запрос затем отправляется вашему контроллеру
  3. ваш контроллер получает объект File из каркаса.(этот объект файла указывает на временный файл)

для загрузки общих файлов Apache, вы можете использовать DiskFileItemFactory, чтобы установить пороговое значение размера, прежде чем среда решит, записать ли файл на диск или сохранитьв памяти.Если хранится в памяти, платформа копирует данные в DataOutputStream (это делается прозрачно, так что ваш сервлет будет по-прежнему работать с объектом File, не зная, находится ли файл на диске или в памяти).

возможно, существует похожая конфигурация для игровой среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...