Файлы загрузки в Google App Engine

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

78
задан Yeldar Kurmangaliyev 14 July 2015 в 08:01
поделиться

9 ответов

На самом деле на этот вопрос отвечают в Приложении документация Egnine. Посмотрите пример на Пользовательские изображения Загрузки .

код HTML, внутри < form> </form>:

<input type="file" name="img"/>

код Python:

class Guestbook(webapp.RequestHandler):
  def post(self):
    greeting = Greeting()
    if users.get_current_user():
      greeting.author = users.get_current_user()
    greeting.content = self.request.get("content")
    avatar = self.request.get("img")
    greeting.avatar = db.Blob(avatar)
    greeting.put()
    self.redirect('/')
49
ответ дан sastanin 24 November 2019 в 10:38
поделиться

Существует поток в Google Groups об этом:

Файлы Загрузки

С большим количеством полезного кода, то обсуждение помогло мне очень в загрузке файлов.

10
ответ дан Peter Mortensen 24 November 2019 в 10:38
поделиться

Если Ваше все еще наличие проблемы, проверьте использование enctype в теге form

номер:

<form encoding="multipart/form-data" action="/upload">

Да:

<form enctype="multipart/form-data" action="/upload">
3
ответ дан Joe Petrini 24 November 2019 в 10:38
поделиться

Вы не можете хранить файлы, поскольку нет традиционной файловой системы. Можно только сохранить их в их собственном DataStore (в поле, определенном как BlobProperty)

в предыдущей ссылке существует пример:

class MyModel(db.Model):
  blob = db.BlobProperty()

obj = MyModel()
obj.blob = db.Blob( file_contents )
1
ответ дан Guido 24 November 2019 в 10:38
поделиться

В Google App Engine нет никакого хранения плоского файла. Все должно войти к Хранилище данных , который немного похож на реляционную базу данных, но не совсем.

Вы могли хранить файлы как TextProperty или атрибуты BlobProperty.

существует предел 1 МБ на записи DataStore, которые могут или не могут быть проблемой.

0
ответ дан Dave Webb 24 November 2019 в 10:38
поделиться

Лично я нашел руководство, описанное здесь , полезным при использовании среды выполнения Java с GAE. По какой-то причине, когда я пытался загрузить файл с помощью

<form action="/testservelet" method="get" enctype="multipart/form-data">
    <div>
        Myfile:<input type="file" name="file" size="50"/>
    </div>

    <div>
        <input type="submit" value="Upload file">
    </div>
</form>

, я обнаружил, что мой класс HttpServlet по какой-то причине не принимает форму с атрибутом enctype. Однако удаление работает, значит, я не могу загружать файлы.

1
ответ дан 24 November 2019 в 10:38
поделиться

Google выпустил сервис для хранения больших файлов. Взгляните на документацию по API blobstore. Если ваши файлы > 1МБ, то вам следует воспользоваться им.

.
6
ответ дан 24 November 2019 в 10:38
поделиться

Я пробую его сегодня. Он работает следующим образом:

моя версия sdk - 1.3.x

html-страница:

<form enctype="multipart/form-data" action="/upload" method="post" > 
<input type="file" name="myfile" /> 
<input type="submit" /> 
</form> 

Код сервера:

file_contents = self.request.POST.get('myfile').file.read() 
6
ответ дан 24 November 2019 в 10:38
поделиться

Я заметил странное поведение при загрузке файлов в App Engine. Когда вы отправляете следующую форму:

<form method="post" action="/upload" enctype="multipart/form-data">
    <input type="file" name="img" />
    ...
</form>

А затем извлекаете img из запроса следующим образом:

img_contents = self.request.get('img')

Переменная img_contents - это str () в Google Chrome, а в Firefox - в юникоде. И как вы сейчас, конструктор db.Blob () принимает строку и выдаст ошибку, если вы передадите строку в Юникоде.

Кто-нибудь знает, как это можно исправить?

Кроме того, я нахожу совершенно странным то, что когда я копирую и вставляю приложение «Гостевая книга» (с аватарами), оно работает отлично. Я делаю все точно так же в своем коде, но это просто не сработает. Я очень близок к тому, чтобы выдернуть волосы.

0
ответ дан 24 November 2019 в 10:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: