标签: blobstore

直接将数据放入AppEngine的Blobstore中

AppEngine的标准API假设文件是​​从HTML表单上传的.我正在尝试从REST API方法将文件发布到blobstore,该方法可以由非Html客户端(Flash,iPhone等)调用

我正在努力工作的代码:

# Get the blobstore upload url    
upload_url = blobstore.create_upload_url("/activities/upload_finished");

# Make sync call to the blobstore url to post our image
result = urlfetch.fetch(url=upload_url,
                        payload=request.FILES,
                        method=urlfetch.POST,
                        headers={'Content-Type': 'multipart/form-data'})
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ValueError:无效边界

任何的想法?
有没有人试过不通过网络表单发布到blobstore?

多部分形式:''

google-app-engine blobstore

6
推荐指数
2
解决办法
3974
查看次数

App Engine Blobstore - 我该怎么做才能限制用户可以上传的文件大小?

我该怎么做才能限制可以上传的文件的大小?我知道我可以用SWFUpload限制它的客户端,但是如何限制它的服务器端呢?

如何防止有人上传1GB文件并占用我的配额?

java google-app-engine blobstore

6
推荐指数
1
解决办法
1259
查看次数

错误:java.lang.UnsupportedOperationException:使用App Engine的BlobStore和Image API时没有可用的图像数据

我需要使用App Engine BlobStore检索上传图像的高度和宽度.为了找到我使用以下代码:

try {
            Image im = ImagesServiceFactory.makeImageFromBlob(blobKey);

            if (im.getHeight() == ht && im.getWidth() == wd) {
                flag = true;
            }
        } catch (UnsupportedOperationException e) {

        }
Run Code Online (Sandbox Code Playgroud)

我可以上传图像并生成BlobKey但是当将Blobkey传递给makeImageFromBlob()时,它会生成以下错误:

java.lang.UnsupportedOperationException:没有可用的图像数据

如何解决这个问题或任何其他方式直接从BlobKey找到图像的高度和宽度.

google-app-engine file-upload image blobstore

6
推荐指数
1
解决办法
977
查看次数

通过app-engine端点api提供blobstore映像

我正在构建一个app-engine端点api,它从用户(Android应用程序)获取图片并以编程方式将其保存到blobstore.然后我将blob_key保存在我的数据存储区中.代码如下:

  • 首先,我通过我接收到的图像@endpoint.methodmessages.BytesField:

    image_data = messages.BytesField(1,required = True)

然后我像这样保存到blobstore:

from google.appengine.api import files

def save_image(data):
  # Create the file
  file_name = files.blobstore.create(mime_type='image/png')

  # Open the file and write to it
  with files.open(file_name, 'a') as f:
    f.write('data')

  # Finalize the file. Do this before attempting to read it.
  files.finalize(file_name)

  # Get the file's blob key
  blob_key = files.blobstore.get_blob_key(file_name)
  return blob_key # which is then saved to datastore
Run Code Online (Sandbox Code Playgroud)

现在我想把图像送回来.我不知道如何将以下代码放入我的端点api:

from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler): …
Run Code Online (Sandbox Code Playgroud)

google-app-engine android blobstore python-2.7 google-cloud-endpoints

6
推荐指数
0
解决办法
4098
查看次数

将servlet架构转换为app-engine端点架构

以下转换是否适用于从Java servlet转换为Google app-engine云端点?

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException { … }
Run Code Online (Sandbox Code Playgroud)

@ApiMethod(name = "save_blob_key", path = "save_blob_key" httpMethod = HttpMethod.POST)
public void saveBlobKey(HttpServletRequest req) throws IOException { … }
Run Code Online (Sandbox Code Playgroud)

背景:

我正在尝试使用端点来处理blobstore回调.

参考:https://developers.google.com/appengine/docs/java/blobstore/overview#Complete_Sample_App

问题:

这里最大的好处是以下两行似乎需要该类HttpServletRequest,我不知道是否可以将它传递给端点.

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(req);
Run Code Online (Sandbox Code Playgroud)

编辑:

我一直在尝试很多路线来解决这个问题.我最新的是将blob servlet与端点api结合起来.我仍然无法使代码工作.所以赏金去的人谁提供了一个解决方案的信息,实际上导致了解决方案.

java google-app-engine servlets blobstore google-cloud-endpoints

6
推荐指数
0
解决办法
842
查看次数

使用Flask(python)从GAE数据存储区提供图像

我想避免使用GAE中的Webapp,所以我使用此代码将图像上传到Blobstore(代码片段来自:http://flask.pocoo.org/mailinglist/archive/2011/1/8/app- engine-blobstore /#7fd7aa9a5c82a6d2bf78ccd25084ac3b)

@app.route("/upload", methods=['POST'])
def upload():
    if request.method == 'POST':
        f = request.files['file']
        header = f.headers['Content-Type']
        parsed_header = parse_options_header(header)
        blob_key = parsed_header[1]['blob-key']
        return blob_key
Run Code Online (Sandbox Code Playgroud)

它返回它看起来确实是一个Blobkey,它是这样的:

2I9oX6J0U5nBCVw8kEndpw ==

然后我尝试使用以下代码显示最近存储的Blob图像:

@app.route("/testimgdisplay")
def test_img_display():
    response = make_response(db.get("2I9oX6J0U5nBCVw8kEndpw=="))
    response.headers['Content-Type'] = 'image/png'
    return response
Run Code Online (Sandbox Code Playgroud)

可悲的是这部分不起作用,我得到以下错误:

BadKeyError: Invalid string key 2I9oX6J0U5nBCVw8kEndpw==
Run Code Online (Sandbox Code Playgroud)

你们之前遇到过这个错误吗?看起来Blobkey格式正确,我找不到线索.

google-app-engine blobstore flask python-2.7 google-cloud-datastore

6
推荐指数
1
解决办法
1873
查看次数

从BlobKey获取Google云端存储文件

我编写了一个Google App Engine应用程序,它利用Blobstore来保存以编程方式生成的数据.为此,我使用了Files API,遗憾的是,该API已被弃用,以支持Google云端存储.所以我正在重写我的助手类来使用GCS.

我希望保持接口尽可能与之前类似,也因为我在数据存储区中保留BlobKeys以保持对文件的引用(并且更改生产应用程序的模型总是很痛苦).当我将东西保存到GCS时,我检索一个BlobKey

BlobKey blobKey = blobstoreService.createGsBlobKey("/gs/" + fileName.getBucketName() + "/" + fileName.getObjectName());
Run Code Online (Sandbox Code Playgroud)

此处的规定,我将其保留在数据存储区中.

所以这里有一个问题:文档告诉我如何blobstoreService.serve(blobKey, resp);在servlet响应中提供GCS文件,但是如何检索文件内容(如InputStream,字节数组或其他)以在我的代码中使用它进行进一步处理?在我目前的实现中,我通过FileReadChannel读取AppEngineFile(两者都弃用)来做到这一点.

java google-app-engine blobstore google-cloud-storage

6
推荐指数
1
解决办法
4234
查看次数

为什么在GAE上部署应用程序时,不会在数据存储区中创建名称为_BlobInfo_的实体类型?

当我们将文件上传到Google App Engine上的Blobstore时,我们发现每次上传_BlobInfo_都会创建一个类型的实体,可以在数据存储区查看器下的本地开发控制台中看到http://localhost:8888/_ah/admin,但是在将应用程序部署到App Engine之后,不会创建这样的实体当我们将文件上传到Blobstore时.它看起来很奇怪,想知道我在这里是否遗漏了什么.

java google-app-engine blobstore google-cloud-datastore

6
推荐指数
1
解决办法
233
查看次数

GAE + JUnit:将blob添加到blobstore

我正在使用Google App Engine for Java,我正在尝试为处理blobstore的代码编写JUnit测试.如何在blobstore中放置blob以在测试期间使用(在配置为使用LocalBlobstoreServiceTestConfig将所有内容保存在内存中之后)?似乎解决方案应该非常简单和基本,但不知怎的,我找不到它.

我想可以使用Files API,但我已经避开了它,因为它已经停止(下周).

我知道测试之外将blob放入blobstore的唯一方法是通过多部分表单上传.但是,我不知道如何在JUnit测试的上下文中这样做.

也可以通过blobstore API与Google Cloud Storage对象进行交互,但我选择使用vanilla blobstore,这样我就不需要将另一个服务(及其客户端库)循环到我的应用程序中.

所以我再次问,如何在那里获得一个blob,以便我可以测试使用它的代码?

java google-app-engine automated-tests blobstore

6
推荐指数
1
解决办法
135
查看次数

如何将javax.activation.DataSource添加到App Engine devserver?

tl; dr:如何将javax.activation.DataSource依赖项添加到通过App Engine Maven插件运行的服务器上?

我正在使用App Engine Maven插件部署到本地App Engine服务器,并且正在尝试使用Blobstore API上载文件。我正在使用Java 11。

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>io.happycoding</groupId>
  <artifactId>blobstore-test</artifactId>
  <version>1</version>
  <packaging>war</packaging>

  <properties>
    <!-- App Engine currently supports Java 8 -->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <failOnMissingWebXml>false</failOnMissingWebXml>
  </properties>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.taglibs</groupId>
      <artifactId>taglibs-standard-spec</artifactId>
      <version>1.2.5</version>
    </dependency>

    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-api-1.0-sdk</artifactId>
      <version>1.9.59</version>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>1.9.71</version>
      </plugin>
    </plugins>
  </build>
</project>
Run Code Online (Sandbox Code Playgroud)

index.jsp

<%@ page import="com.google.appengine.api.blobstore.BlobstoreServiceFactory" %>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
  </head> …
Run Code Online (Sandbox Code Playgroud)

java google-app-engine maven blobstore appengine-maven-plugin

6
推荐指数
1
解决办法
404
查看次数