Разрешает ли Google App Engine создавать файлы и папки на сервере? - PullRequest
22 голосов
/ 22 апреля 2010

Я знаю, что Google App Engine предлагает свободное место, но мне интересно, предназначен ли он для хранения данных только в своей базе данных, или он также позволяет мне создавать файлы и каталоги на стороне сервера для хранения моих данных?Например, я могу использовать следующий метод для сохранения файла?

  public static void saveFile(String File_Path,StringBuffer Str_Buf,boolean Append)
  {
    FileOutputStream fos=null;
    BufferedOutputStream bos=null;

    try
    {
      fos=new FileOutputStream(File_Path,Append);
      bos=new BufferedOutputStream(fos);
      for (int j=0;j<Str_Buf.length();j++) bos.write(Str_Buf.charAt(j));
    }
    catch (Exception e) { e.printStackTrace(); }
    finally
    {
      try 
      {
        if (bos!=null)
        {
          bos.close();
          bos=null;
        }
        if (fos!=null)
        {
          fos.close();
          fos=null;
        }
      }
      catch (Exception ex) { ex.printStackTrace(); }
    }
  }

Ответы [ 4 ]

27 голосов
/ 22 апреля 2010

Вы можете читать файлы из своего собственного проекта - Вы не можете писать в файловую систему

из FAQ ...

Почему я не могу написать в этот файл?

Запись в локальные файлы не поддерживается в App Engine из-за распределенного характера вашего приложения. Вместо этого данные, которые должны быть сохранены, должны храниться в распределенном хранилище данных. Для получения дополнительной информации см. Документацию по песочнице времени выполнения

Приложение App Engine не может:

  • запись в файловую систему. Приложения должны использовать хранилище данных App Engine для хранения постоянных данных. Чтение из файловой системы разрешено, и все файлы приложения, загруженные с приложением, доступны.

  • открыть сокет или получить доступ к другому хосту напрямую. Приложение может использовать службу извлечения URL-адреса App Engine, чтобы отправлять запросы HTTP и HTTPS другим хостам на портах 80 и 443.

  • порождает подпроцесс или поток. Веб-запрос к приложению должен быть обработан в одном процессе в течение нескольких секунд. Процессы, для ответа которых требуется очень много времени, прекращаются, чтобы избежать перегрузки веб-сервера.

  • совершать другие виды системных вызовов.

5 голосов
/ 22 апреля 2010

Нет, файл ввода / вывода не разрешен. Вы можете использовать BLOB-объекты для хранения изображений или текста.

4 голосов
/ 05 марта 2014

Новая информация. Ответ - Да, но вы должны использовать их облачное хранилище для доступа для записи. Вы не можете использовать обычные файлы для своих целей.

https://developers.google.com/appengine/docs/java/googlecloudstorageclient/

Он также имеет Python API и RESTful API.

1 голос
/ 14 января 2014

Думаю, следует упомянуть, что запись в blobstore с использованием файлового API устарела , и что Google переходит на облачное хранилище.

...