python - 通过网页形式将图像上传到谷歌云存储Python,谷歌应用程序引擎,AngularJS

标签 python image google-app-engine upload google-cloud-storage

首先让我说

我想我已经阅读了所有与该主题相关的堆栈交换帖子。*

我正在尝试做什么:

  1. 我正在尝试允许某些用户通过我网站上的表单将图像发送到 Google 云存储。
  2. 另一个要求除了将该图像发送到云存储之外,我还需要在数据存储中创建该图像的模型及其相关属性。

我不确定解决这个问题的最佳方法是什么,因为..

我读过的方法:

有很多方法可以将图像存储到云存储中:

我读过很多相互矛盾的信息,

我读了太多书,我无法弄清楚,

但是,

我认为解决方案是:

对于 blobstore:

  1. blobstore.uploadtocloudstoragething 方法可能有也可能没有文件上传大小限制(不,这不是实际的调用或方法名称)2. blobstore 方法听起来像是要被淘汰??

对于 Jason API:

“但是,客户端库包含 App Engine 优化,因此使用 REST API 可能需要额外的开发时间。注意:App Engine 开发服务器支持云存储客户端。它不支持不支持 REST API。”

对于客户端库:

我不知道。到目前为止看起来还不错。这是我正在考虑使用的方法:

"cloudstorage.open(filename, mode='r', content_type=None, options=None, read_buffer_size=storage_api.ReadBuffer.DEFAULT_BUFFER_SIZE, retry_params=None)

In read mode (r) opens the specified Cloud Storage object for read. In write mode w, if the specified file exists, it opens it for an overwrite (append is not supported). If the file doesn't exist, it is created in the specified bucket."

我正在使用的东西:

  1. Google 应用引擎
  2. Python(用于处理程序、模型等)
  3. angularjs 和 jquery(前端)
  4. 有时是 json(后端)
  5. GAE 样板(不要问)

我想我会做什么:

  1. 获取用户的图像:

所以,我找到了我测试过的这个表格。它确实从您的计算机中获取文件:

<form action="<?php echo $upload_url?>" enctype="multipart/form-data"
method="post">
Files to upload: <br>    <input type="file" name="uploaded_files"    size="40">    <input type="submit" value="Send">

(不,我不能在操作中使用 php 垃圾。我从文档中的某个地方获取了它,但我测试了它,它确实抓取了一个文件,不,它不会发送,而且它期望它会是愚蠢的)

  • 修改我当前的处理程序(负责在数据存储区中创建图像模型)以也使用
  • 这个方法:

    "cloudstorage.open(filename, mode='r', content_type=None, options=None, read_buffer_size=storage_api.ReadBuffer.DEFAULT_BUFFER_SIZE, retry_params=None)

    In read mode (r) opens the specified Cloud Storage object for read. In write mode w, if the specified file exists, it opens it for an overwrite (append is not supported). If the file doesn't exist, it is created in the specified bucket."

    到目前为止我的问题

    我不知道该表单如何工作,也不知道如何从该表单向处理程序获取正确的信息,以及该处理程序需要哪些信息,以便我可以处理它,创建模型(我已经知道如何在数据存储中创建模型,已经这样做了),并使用此方法将图像发送到谷歌云存储:

    "cloudstorage.open(filename, mode='r', content_type=None, options=None, read_buffer_size=storage_api.ReadBuffer.DEFAULT_BUFFER_SIZE, retry_params=None)

    In read mode (r) opens the specified Cloud Storage object for read. In write mode w, if the specified file exists, it opens it for an overwrite (append is not supported). If the file doesn't exist, it is created in the specified bucket."

    谁能给我举个例子吗?我找不到任何关于在表单中放入什么内容的好的相关帖子或文档,以便它将抓取文件,抓取用户填写的其他表单数据,然后最终将图像发送到谷歌云存储。

    --更新--:

    因此,在发布此内容后,我立即在 google 上搜索了 gcs.open,这导致了这篇文章:

    how to upload image to the cloud storage via app engine?

    我相信就后端而言这可以解决问题,我确实还有一个问题。

    重新粘贴问题:

    from post above

    问题:

    1. 我不知道图像名称是什么,我想使用现有的图像名称,或者可能是随机的。有建议吗?

    2. 我应该把这个:enctype="multipart/form-data"放在哪里?

    3. 数字 2. 会扰乱我的其他表单数据吗?我需要更多信息,而不仅仅是发布请求中的这张图片

    最佳答案

    回答您的问题:

    1. 我不知道图像名称是什么,我想使用 现有的一个,或者可能是随机的一个。有什么建议吗?

    我认为这并不重要,只需确保考虑可能的名称冲突以及随后会发生什么。我认为这主要取决于您的应用程序的需求。您始终可以使用随机文件名,并在数据存储中保留对云存储项目的引用旁边的实际文件名。

  • 我应该把这个:enctype="multipart/form-data"放在哪里?
  • Enctype 是一个表单属性,因此需要在 HTML 中的表单元素上设置:

    <form enctype="multipart/form-data" action="/save" ... >
    
  • 数字 2. 会扰乱我的其他表单数据吗?我需要的信息多于 只是发布请求中的这张图片
  • 不,不应该。只需添加更多表单输入字段,它们都会与表单数据一起提交。

    关于python - 通过网页形式将图像上传到谷歌云存储Python,谷歌应用程序引擎,AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31734381/

    相关文章:

    python - Tkinter 和 PIL 调整图像大小以适合标签

    image - 使用 PIL (Pillow) 和 Image 但保持良好的分辨率

    google-app-engine - 事务如何影响 NDB 中下一个非祖先查询的读取一致性

    python - 如何在 Pyramid 模板中检查经过身份验证的用户?

    python - 在python中合成音频音高

    python - 如何在 pyspark 中以秒为单位获取 datediff() ?

    javascript - 如何将 application/octet-stream 转换为以 base64 或任何 jpeg 格式显示的图像?

    c# - 如何在 MVVM 中的 wpf 中设置来自资源的图像源

    java - 如何在 gwt 中使用 google app engine

    google-app-engine - App Engine 网址映射