【问题标题】:Get list of static files in a folder in server in Google App Engine platform获取 Google App Engine 平台服务器文件夹中的静态文件列表
【发布时间】:2012-11-26 05:23:54
【问题描述】:

我正在使用 Google App Engine 来托管我的网站,该网站主要是静态页面。但是有一部分我需要从服务器中的文件夹中获取图像列表,并使用 JavaScript 将这些图像动态添加到页面中。

我在 python 脚本中使用os.walk("static/images/temp/1.jpg") 让它在我的本地机器上工作。但是在部署站点后,它不起作用。 python脚本返回空。是否应该有不同的方法来获取 Google App Engine 中的静态文件列表?

【问题讨论】:

    标签: python file google-app-engine


    【解决方案1】:

    主要问题是静态目录中的文件(我假设您正在使用它来提供文件)存储在与您的代码不同的位置,因此不在您代码的文件目录中。

    您可以做的一件事(参见here 了解类似问题)是在您声明为@987654322 的另一个目录中创建指向您的文件的符号链接(或只是复制它们) @(或根本没有)在您的app.yaml 中。然后它将与您的应用程序代码一起使用,您可以使用os 引用它。例如,下面是一些非常简单的代码,它遍历根目录中名为 upload_stuff 的目录中的文件:

    class MainPage(webapp2.RequestHandler):
      def get(self):
        path = os.path.join(os.path.dirname(__file__), 'upload_stuff')
        for filename in os.listdir(path):
          # Here you can do what you need with the files
          self.response.out.write(filename)
    

    您可以对其进行调整以按照自己的方式工作,但基本思想是您需要将文件与代码以及静态形式一起存储。

    【讨论】:

    • 后续问题,如果我只是将文件移动到另一个目录而不将它们声明为静态以便 python 脚本可以访问它们,我的静态 .htm 页面是否能够访问这些图像?我需要 python 脚本的主要原因是我可以在特定文件夹中上传任意数量的照片,获取列表并将它们动态添加到静态 .htm 页面。
    • @JohnNg 我认为在您的情况下,文件的名称很重要,是吗?如果是这样,您可以执行一些操作,例如检索该文件夹中所有文件的列表,然后将它们提供给您的脚本,并正确引用 static 文件夹。例如,如果你得到你的列表并且它包含file1.png,那么你可以确定引用/static/images/file1.png(或任何你的图像路径)会返回图像,因为你的非静态目录将包含确切的与静态相同的内容。这有意义吗?
    • 是的,我只需要文件名。这意味着我必须保留 2 个文件夹(1 个静态和 1 个非静态)以包含相同的图像。我试图避免这种情况。我只是想知道是否有可能只有一个非静态的图像文件夹。让python脚本从该非静态文件夹中获取文件名,然后通过<img>标签从静态html文件访问非静态文件夹
    • @JohnNg 一种​​方法是从包含实际文件的目录创建一个符号链接 - 这样您就不必担心修改两个目录(更改主目录将反映在符号链接中)。在 Linux 上,这类似于ln -s images/ linked_images/,其中linked_images 是包含指向静态目录的符号链接的文件夹。
    • @JohnNg 不可能的原因是指定位置的文件(比如root/images/image1.png)不一定可以通过/images/image1.png 访问。因此,当您尝试为他们服务时,您将无法说“我想为在此路径上找到的此图像提供服务”。因此,您必须创建一个static_dir,其文件系统与您的代码位于不同的区域。这有意义吗?
    猜你喜欢
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2017-08-15
    • 1970-01-01
    • 2019-09-02
    • 2011-01-11
    相关资源
    最近更新 更多