猿问

在 GO 中将 Json Array 从 GAE 上传到 Cloud Storage

我尝试将应用引擎应用程序使用以下代码发布的 json 数组上传到谷歌云存储:


saveData : function saveData() {

  var _this = this,

      save = this.shadowRoot.querySelector('#save-data'),

      subData = JSON.stringify(_this.app.userSession);


  save.url="url";

  save.body = subData;

  save.go();

}

发布的消息与下面发布的代码一起处理。使用此代码,我可以在以用户 ID 命名的云存储桶上创建一个文件夹。我想做的是将整个 json 数组复制到文件夹中 - 即下面代码中的变量 f。我尝试使用 io.Copy(wc, f) 但它给了我以下错误:


不能在 io.Copy 的参数中使用内容(类型 userData)作为类型 io.Reader:userData 没有实现 io.Reader(缺少 Read 方法)


显然我做错了什么,但我很新,我完全被卡住了。有人能帮我吗?


package expt


import (

    "bytes"

    "encoding/json"

    "io/ioutil"

    "log"

    "net/http"

    "golang.org/x/net/context"

    "golang.org/x/oauth2"

    "golang.org/x/oauth2/google"

    "google.golang.org/appengine"

    "google.golang.org/appengine/file"

    "google.golang.org/appengine/urlfetch"

    "google.golang.org/cloud"

    "google.golang.org/cloud/storage"

)


var bucket = "expt"


func init() {

    http.HandleFunc("/", handleStatic)

    http.HandleFunc("/save", saveJson)

}


func handleStatic(w http.ResponseWriter, r *http.Request) {

    w.Header().Set("Cache-Control", "no-cache")

    http.ServeFile(w, r, "static/"+r.URL.Path)

}


type Result map[string]interface {

}


type userData struct {

    id     string

    age    string

    gender string

}


func testA(r *http.Request) userData {

    defer r.Body.Close()

    body, err := ioutil.ReadAll(r.Body)

    var userDataCurr userData

    if err != nil {

        log.Printf("Couldn't read request body: %s", err)

    } else {

        var f Result

        err := json.Unmarshal(body, &f)

        if err != nil {

            log.Println("Error: %s", err)

        } else {

            user := f["user"].(map[string]interface{})

            userDataCurr.id = user["id"].(string)

        }

    }

    return userDataCurr

}


慕的地6264312
浏览 181回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答