标签: blobstore

ImagesService.getServingUrl的URL持续多长时间

我正在使用App Engine中的blobstore和imagesService.我想知道我从imagesService.getServingUrl(blobKey)获得的URL会持续多长时间.如果我使用它来存储用户个人资料图片,我可以将此URL存储在用户中,还是应该存储BlobKey并在每次需要图片时获取servingUrl?

java google-app-engine image-processing blobstore

5
推荐指数
1
解决办法
849
查看次数

App Engine:通过从blobstore提供缩略图来计算要生成的缩略图的尺寸

我目前正在使用blobstore为图像生成缩略图,但是,我喜欢在img标记中存储缩略图的尺寸,因为这是一种很好的做法,有助于加快渲染速度并使部分加载的页面看起来更好一些.

如何只计算原始图像的尺寸,如何计算blobstore生成的缩略图的尺寸?

我以前的尝试并不是很准确,大部分时间都是一两个像素(可能是由于四舍五入).

我知道获取缩略图而不是使用图像API检查尺寸会起作用,但我认为效率低下.

这是我目前用来计算它的代码,然而,它偶尔偏离一个像素,导致浏览器稍微拉伸图像,导致调整大小的文物以及性能较差.

from __future__ import division
def resized_size(original_width, original_height, width, height):
    original_ratio = float(original_width) / float(original_height)
    resize_ratio = float(width) / float(height)
    if original_ratio >= resize_ratio:
        return int(width), int(round(float(width) / float(original_ratio)))
    else:
        return int(round(float(original_ratio) * float(height))), int(height)
Run Code Online (Sandbox Code Playgroud)

准确性非常重要!

python google-app-engine thumbnails blobstore

5
推荐指数
1
解决办法
444
查看次数

上传到Android中的Appengine Blobstore

我正在开发一款适用于Android的简单多媒体消息应用程序,我正在尝试使用Google AppEngine的BlobStore作为我的云存储,用于传输各种图像,视频和音频文件.但是,我所看到的所有上传到blobstore的例子都假设我是通过HTTP表单来做的,所以我有点不知道该做什么.

我见过几个人问同样的问题,但他们似乎都没有得到满意的答案.我可以或者应该以这种方式使用AppEngine的blobstore,如果是这样,我该如何去做呢?

谢谢,所以.

upload google-app-engine android blob blobstore

5
推荐指数
1
解决办法
4863
查看次数

GAE:使用testbed和webtest测试blob的下载

我正在使用blobstore和我的Google App Engine应用程序,一切都在生产服务器和开发服务器上运行良好.然而,使用testbed和webtest进行测试是行不通的......

在我的测试中,blob存在,因为我可以像这样访问它:

blob = self.blobstore_stub.storage._blobs[key]
Run Code Online (Sandbox Code Playgroud)

当我尝试在我的测试中下载blob时

response = self.app.get("/blob-download/2")
Run Code Online (Sandbox Code Playgroud)

我的blobstore下载处理程序永远不会被调用,我得到404错误(但链接在dev或prod服务器上工作).

我怀疑这是testbed或webtest的错误...

关于我可能做错什么的任何想法,或者如果这是一个错误的testbed/webtest可能是一个好的工作,以便我可以测试我的代码的这部分?


以下是有关我如何设置测试的一些信息.

import unittest
from webtest import TestApp
from google.appengine.ext import db, testbed
from google.appengine.api import users
from google.appengine.api import apiproxy_stub_map

class ExampleTests(unittest.TestCase):

    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.setup_env(app_id="stv")
        self.testbed.activate()
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_taskqueue_stub()
        self.testbed.init_mail_stub()
        self.testbed.init_blobstore_stub()
        self.app = TestApp(main.application)
        apiproxy_stub_map.apiproxy.GetStub("datastore_v3").Clear()
        self.taskqueue_stub = apiproxy_stub_map.apiproxy.GetStub('taskqueue')
        self.mail_stub = apiproxy_stub_map.apiproxy.GetStub('mail')
        self.blobstore_stub = apiproxy_stub_map.apiproxy.GetStub('blobstore')

   def testBlob(self):
        # create blob using files.blobstore.create
        response = self.app.get("/blob-download/2") # This returns 404
        self.assertEqual(response.body, "content of blob") …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine blobstore

5
推荐指数
1
解决办法
686
查看次数

Google App Engine的Blobstore Java API如何工作?

谷歌应用引擎blobstore服务如何处理文件上传32 MB没有任何TimeOut异常.此外,它不会影响应用引擎的请求 - 响应间隔一分钟.它背后会有什么样的过程.

java google-app-engine file-upload blobstore

5
推荐指数
1
解决办法
290
查看次数

GAE从blobstore下载了文件扩展名

我目前正在GAE Blobstore中存储一堆.docx文件.我最近注意到这些文件在某些​​计算机(IE 9 for Windows 7)上没有文件扩展名下载,但适用于其他人(IE 8,Chrome for Windows 7).

以下是文件存储在blobstore中的方式:

f = files.blobstore.create(mime_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document',
                           _blobinfo_uploaded_filename=filename)
## then some code to write data and save ##
Run Code Online (Sandbox Code Playgroud)

以下是Chrome检查器中文件的响应标头:

Cache-Control:no-cache
Content-Disposition:attachment; filename="causes_of_ww1_emanresu"
Content-Length:12120
Content-Type:application/vnd.openxmlformats-officedocument.wordprocessingml.document
Date:Fri, 26 Oct 2012 23:54:09 GMT
Server:Google Frontend
X-AppEngine-Estimated-CPM-US-Dollars:$0.000033
X-AppEngine-Resource-Usage:ms=15 cpu_ms=0
Run Code Online (Sandbox Code Playgroud)

这是我如何服务blob:

self.send_blob(blob_info, save_as=blob_info.filename, content_type=blob_info.content_type)
Run Code Online (Sandbox Code Playgroud)

我甚至尝试过硬编码content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document'无济于事.

关于发生了什么以及如何解决问题的任何想法?


根据要求,这是我在最初保存blob时如何获取文件信息.我很确定在这个级别上没有出现错误,但这是问题的前兆:

# get the file from a file_url with urlfetch
result = urlfetch.fetch(file_url)
headers = result.headers

# some custom functions to return a filename
username = self.get_username()
filename = get_filename(title, …
Run Code Online (Sandbox Code Playgroud)

google-app-engine internet-explorer google-chrome http-headers blobstore

5
推荐指数
1
解决办法
337
查看次数

应用引擎提供的blob网址有效期多长?

我想知道是否有人知道从谷歌应用程序引擎blob商店返回的图像网址有多长时间仍然有效?

我一直在跟踪网址,我在2013年1月3日从blob商店提供了一张图片并且它仍在那里.

我特别要求,所以我可以缓存图片网址而不是尝试反复提供.如果我这样做,我仍然会检查图像是否存在,但我需要多久检查一次

谢谢!

google-app-engine blobstore

5
推荐指数
1
解决办法
744
查看次数

我如何使用blobstore来处理android镜像

有人可以帮我澄清一下.我正在https://developers.google.com/appengine/docs/java/blobstore/overview上阅读有关blobstore的开发者页面.我似乎无法绕过保存和检索blob的过程?这听起来像

  • android app会直接将图像发送到blobstore
  • 保存图像后,blobstore会将一个blobkey返回给我的后端,让我放入数据存储区

这是过程吗?也许是因为我度过了漫长的一天,但我却看不到它.如果某人有一个例子,他们不介意分享,请发布.我只需要在blobstore中保存android中的图像,然后能够使用blobkey或其他方式检索它们.

我已经看过了

对于我的生活,我不知道他们为什么不为我做这件事.

我想有些问题是:

  • android如何知道将blob发送到哪里?我的意思是,谷歌是否区分我的blobstore实例与其他人的实例,类似于它如何区分我的数据存储实例?换句话说,我可以转到app引擎Applications Overview,以我在数据存储区中的方式查看属于我的应用程序的所有blob吗?我想一个完整的,有效的代码可以帮助我看到这些答案.

我的部分问题可能是我从未使用过servlet.我目前正在为我的api使用Google Cloud Endpoint.

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

5
推荐指数
0
解决办法
2108
查看次数

GAE Blobstore:上传blob以及其他文本字段

我有一个表单,在文本字段之间包含一个上传图片的元素.
我想将blob存储在blobstore中并ndb.Model使用我的model()引用它ndb.BlobKeyProperty().此链接中
显示的方法使用上传处理程序(),该处理程序从以这种方式创建的链接中调用:UploadHandler

upload_url = blobstore.create_upload_url('/upload')
Run Code Online (Sandbox Code Playgroud)

upload_url是为上传blob而创建的页面中的表单操作.但是,我的表单包含未在UploadHandlerpost方法中处理的其他字段.我找到的临时解决方案是为我的表单创建一个处理程序,该处理程序继承自我的BaseHandler和BlobstoreUploadHandler:

class EditProfile(blobstore_handlers.BlobstoreUploadHandler, BaseHandler)
    def get(self):
        params['upload_url'] = blobstore.create_upload_url('/upload_blob1')
        ... fields ...

    def post(self):
        upload_blob = self.get_uploads()
        blob_key = upload_blob[0].key()
        value_field1 = self.request.POST.get('field1')
        value_field2 = self.request.POST.get('field2')
        value_field3 = self.request.POST.get('field3')
        ... 
Run Code Online (Sandbox Code Playgroud)

这个方法有效,除了我必须main.py为每个要上传blob的页面定义一个新的处理程序:

app = webapp2.WSGIApplication([ ('/upload_blob1', handlers.EditProfile),
                                ('/upload_blob2', handlers.EditBlob2Handler),
                                ('/serve/([^/]+)?', handlers.ServeHandler) ], 
                                debug=os.environ['SERVER_SOFTWARE'].startswith('Dev'), config=webapp2_config)
Run Code Online (Sandbox Code Playgroud)

问题:如何使用UploadHandler从不同页面调用的单个上载处理程序(例如:)来执行上载blob任务?我知道对于经验丰富的GAE程序员来说这可能非常简单,但我还没有找到解决方案.

python google-app-engine blobstore app-engine-ndb

5
推荐指数
1
解决办法
450
查看次数

在Java中在app引擎上制作blobstore实体副本的最佳方法是什么?

这是我们的简单用例:user2想要将user1的文档复制到我们应用程序中的自己的存储库中.应该简单吧?我们需要做的就是在blobstore中创建第二个相同的blob,并返回我们可以与user2关联的密钥.我们必须在这里遗漏一些东西.似乎app引擎blob存储的主要功能是处理从浏览器上传和下载到浏览器的blob,并且启动服务器端的简单复制操作并不那么简单.

显而易见的解决方案似乎是在java中使用实验文件api,但没有爱.它起作用,直到你的文件大小超过MB左右,然后它失败,有些不可预测.当我们只需要在存储层中复制时,将它全部读入服务器层也似乎很愚蠢.此外,我们将实验性功能纳入生产环境的可能性很小,尽管非零.

关于我们环境的一些信息:应用程序是用Java编写的,我们使用的是blobstore,而不是云存储,现在就致力于它.我们是一个小型的部门团队,并希望说明应用引擎是一个很好的平台,但这个让我们感到难过.S3让这个简单明了,我们在这里错过了一些非常愚蠢的东西吗?

java google-app-engine blobstore

5
推荐指数
1
解决办法
464
查看次数