我在App Engine上使用Go SDK(1.9.34 - 2016-03-15
)。 blobstore api在开发和生产中都正常工作,但现在它似乎返回不同的结果,现在打破了上传。
当我在开发中使用此代码(使用goapp serve
)和生产时,我会得到不同的结果。 GET
请求附带一个参数,我将其解压缩并添加到上传网址中。
c := appengine.NewContext(r)
upUrl, err := blobstore.UploadURL(c, "/upload", nil)
c.Infof("Upload url = %+v", upUrl)
if (err != nil) { //error handling here }
param := r.FormValue("param")
q := upUrl.Query()
q.Set("param", param)
upUrl.RawQuery = q.Encode()
c.Infof("Upload url after query = %+v", upUrl)
在Dev
我得到(这是预期的行为):
Upload url = http://localhost:8080/_ah/upload/RANDOMSTRING
Upload url after query = http://localhost:8080/_ah/upload/RANDOMSTRING?param=99
在Prod
我得到(正在构建错误的上传网址):
Upload url = https://www.example.com/_ah/upload/?param=99/RANDOMSTRING1/RANDOMSTRING2/
Upload url after query = https://www.example.com/_ah/upload/?param=99
我知道建议使用云存储而不是blobstore,但这是遗留代码,因此我现在不想更改它。几个星期后它工作正常,只是发现了一个区别。我从较旧的SDK升级到较新的SDK(结果基于最新的SDK),但仍然没有区别。
关于可能出现什么问题的任何建议?
谢谢!