首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将base64编码的字符串视频保存到磁盘

将base64编码的字符串视频保存到磁盘
EN

Stack Overflow用户
提问于 2017-11-02 02:50:08
回答 2查看 836关注 0票数 0

为了保存通过json上传的视频,我想出了以下功能:

代码语言:javascript
复制
func SaveBase64VidToDisk(vidString string) (interface{}, error) {
    vidExt := strings.ToLower(strings.Split(strings.Split(vidString, ";")[0], "/")[1])
    vidData := strings.Split(vidString, ";base64,")[1]
    vidReader := base64.NewDecoder(base64.StdEncoding, strings.NewReader(vidData))
    fmt.Println("vidEXT is:", videExt)

    dir, err := os.Getwd()
    if err != nil {
        log.Fatal(err)
    }
    destDir := "/media/videos/"
    path := dir + destDir
    vidFileName := getRandomFileName("randomstr") + "." + vidExt
    vidFile, err := os.Create(path + vidFileName)
    if err != nil {
        fmt.Println(err)
        return nil, err
    }

    defer vidFile.Close()

    if _, err := vidFile.Write(vidData); err != nil {
        fmt.Println("error saving video")
        panic(err)
        return nil, nil
    }
    return vidFileName, nil

}

func getRandomFileName(prefix string) string {
    rand.Seed(time.Now().UTC().UnixNano())
    l := len(prefix)
    result := make([]byte, l)
    for i := 0; i < l; i++ {
        result[i] = CHARS[rand.Intn(len(CHARS))]
    }
    return string(result)
}

但是,这会产生错误:

代码语言:javascript
复制
shared/saveimage.go:117: cannot use vidData (type string) as type []byte in argument to vidFile.Write

诚然,我不知道我应该使用哪个解码器来保存数据,以便SaveBase64VidToDisk是一个黑暗中的关闭,所以感谢您的帮助,以解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-02 03:30:27

这将无法工作,因为vidData是一个包含base64编码视频的字符串。您想要的是从vidReader读取数据,并保存它。它是一个io.Reader,所以您可以使用Read函数从它读取数据。

或者,使用base64包中的base64函数将其直接读取到[]byte中。

代码语言:javascript
复制
data, _ := base64.StdEncoding.DecodeString(vidData)
vidFile.Write(data)
票数 2
EN

Stack Overflow用户

发布于 2017-11-02 03:00:53

你也许可以

代码语言:javascript
复制
vidFile.Write([]byte(vidData))

编辑:哦,我明白了,我以为你真的想保存视频base64encoded。听起来你想做的事:

代码语言:javascript
复制
data := []byte{}
base64.StdEncoding.Decode(data, vidData)
vidFile.Write(data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47066801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档