Google App Engine是否允许在服务器上创建文件和文件夹?

问题描述 投票:23回答:5

我知道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(); }
    }
  }
google-app-engine file save
5个回答
27
投票

您可以从自己的项目中读取文件-You cannot write to the file system

来自常见问题解答...

为什么我不能写这个文件?

由于您的应用程序具有分布式特性,因此App Engine不支持写入本地文件。相反,必须保留的数据应存储在分布式数据存储中。有关更多信息,请参见运行时沙箱上的文档

App Engine应用程序不能:

  • 写入文件系统。应用程序必须使用App Engine数据存储区来存储持久性数据。允许从文件系统读取,并且所有与应用程序一起上传的应用程序文件均可用。

  • 打开套接字或直接访问其他主机。应用程序可以使用App Engine URL提取服务分别向端口80和443上的其他主机发出HTTP和HTTPS请求。

  • 产生一个子进程或线程。对应用程序的Web请求必须在几秒钟内通过单个过程进行处理。需要花费很长时间才能响应的进程将终止,以避免Web服务器超载。

  • 进行其他类型的系统调用。


5
投票

否,不允许文件I / O。您可以使用Blob来存储图像或文本。


4
投票

新信息。答案是肯定的,但是您必须使用他们的云存储进行写访问。您不能出于自己的目的使用常规文件。

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

它同时具有Python API和RESTful API。


1
投票

[我认为应该提到的是,使用文件API is now deprecated写入Blobstore,并且Google正在迁移到云存储。


0
投票

Google App Engine旨在具有可扩展性和无状态。

可伸缩意味着启动/关闭/回收多个并行实例(弹性)。因此,如果一个实例将数据写入本地SQLite数据库,则其他并行实例将看不到或不知道该数据。这将导致不一致,因此您根本无法获得此类服务。

因此,您必须通过网络将应用程序引擎之外的数据(状态)写入持久存储(firebase或cloud sql或cloud storage或redis)。

如果要方便地“一站式全部”计算和本地存储,则必须旋转具有块存储的VM。

© www.soinside.com 2019 - 2024. All rights reserved.