小编Sím*_*son的帖子

提交multipart/form-data表单时在app引擎中编码问题

我有一个简单的表单,提交图像到blobstore和图像的标题.这适用于我的本地devserver但是当我部署我的代码时,标题中的非ascii字母变成了乱码,带有ascii和hex的某种混合.例如,Ísland成为= CDsland.注意,我<meta http-equiv="Content-Type" content="text/html; charset=utf-8">在标题中使用 第一个值.此外,utf-8适用于我的所有其他形式.只是多部分形式变得乱码.无论如何这是我的形式:

<form action="{{ uploadurl }}" enctype="multipart/form-data" method="post">
  <div><label>Title</label><input type="text" name="title" class="string" /></div>
  <div><label>Picture</label><input type="file" name="img"/></div>
  <div style="margin-top:10px;"><input type="submit" value="Add picture" /></div>
  <input type="hidden" value="{{ album.key }}" name="alid"/>
</form>
Run Code Online (Sandbox Code Playgroud)

这是处理表单的类:

# handler for posting photos
class PostPhoto(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        upload_files =  self.get_uploads('img')
        photourl = images.get_serving_url(str(upload_files[0].key()))
        photo = Photo()
        #because of multipart/form-data
        photo.title = self.request.get("title")
        photo.photourl = photourl
        photo.photoalbum = PhotoAlbum.get(self.request.get('alid'))     
        photo.put()
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?我是否必须进行一些服务器端编码/解码?我试过google搜索没有结果(python newb),所以这是我最后的手段,我只是改变我的设计并拆分表格.

python google-app-engine character-encoding

13
推荐指数
3
解决办法
2192
查看次数

使用应用程序引擎在数据存储中存储BlobKey

所以我决定重写我的图片库,因为新的高性能图像服务的东西.这意味着使用我以前从未使用过的Blobstore.在我尝试将BlobKey存储在我的模型中之前,这似乎很简单.

我如何在模型中存储对blobstorekey的引用?我应该使用字符串还是应该使用一些我不知道的特殊属性?我有这个模型

class Photo(db.Model):
 date = db.DateTimeProperty(auto_now_add=True)
 title = db.StringProperty()
 blobkey = db.StringProperty()
 photoalbum = db.ReferenceProperty(PhotoAlbum, collection_name='photos') 
Run Code Online (Sandbox Code Playgroud)

我收到此错误:属性blobkey必须是str或unicode实例,而不是BlobKey

当然,我是应用程序引擎的新手,但这是我见过的第一个主要墙.谷歌广泛搜索没有任何成功.

google-app-engine

8
推荐指数
2
解决办法
3437
查看次数