我正在尝试从blobKey中提供blob,我将其存储在db.Model中作为blobstore.BlobReferenceProperty(),我不确定如何正确地对待这个,因为我当前的方法给出了404。我通过使用常规self.request.get('file_field')
在SDK控制台中,键的内容如下所示:
Content-Type: video/mp4
MIME-Version: 1.0
Content-Length: 475712
Content-MD5: OTY0MjY4OGI4NDgwYzVlZTI2MGJiNzg0YTA4OTIzNzY=
content-type: video/mp4
content-disposition: form-data; name="video_file"; filename="test_time.mp4"
X-AppEngine-Upload-Creation: 2012-11-10 21:41:12.973934
我的视频下载处理程序非常标准,看起来像这样
class VideoServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
resource = str(urllib.unquote(resource))
blob_info = blobstore.BlobInfo.get(resource)
self.send_blob(blob_info)
以下是我如何呈现网址:
'/videos/%s' % time_data_instance.video_key.key()
和网址映射:
('/videos/([^/]+)?', VideoServeHandler)
接下来是我从控制台得到的404错误:
INFO 2012-11-10 21:54:11,371 dev_appserver.py:3092] "GET /videos/Content-Type:%20video/mp4MIME-Version:%201.0Content-Length:%20475712Content-MD5:%20OTY0MjY4OGI4NDgwYzVlZTI2MGJiNzg0YTA4OTIzNzY=content-type:%20video/mp4content-disposition:%20form-data;%20name= HTTP/1.1" 404 -
有人知道问题可能是什么,看看404中的网址,看起来好像是不正确但我找不到任何其他方法来生成它
更新
继承整个代码
答案 0 :(得分:0)
send_blob需要BlobKey,而不是BlobInfo。
只需将资源传递给send_blob
class VideoServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
resource = str(urllib.unquote(resource))
self.send_blob(resource)
答案 1 :(得分:0)
问题在于您的请求字符串:
INFO 2012-11-10 21:54:11,371 dev_appserver.py:3092] "GET /videos/Content-Type:%20video/mp4MIME-Version:%201.0Content-Length:%20475712Content-MD5:%20OTY0MjY4OGI4NDgwYzVlZTI2MGJiNzg0YTA4OTIzNzY=content-type:%20video/mp4content-disposition:%20form-data;%20name= HTTP/1.1" 404 -
据我所知,你要求/videos/Content-Type:%20video/mp4[..some garbage...]
,难怪你得到了404。
再次检查您提出请求的方式。肯定它看起来不像这样:
'/videos/%s' % time_data_instance.video_key.key()