golang oss上传文件

你的昵称是不对的 · · 3050 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

1、上传文件 - oss上传Byte数组

代码:

func UploadFile(c *gin.Context) error  {
    var(
        err error
    )

    /*
        通过form-data上传文件,文件名:file
     */
    file,err := c.FormFile("file")
    if err != nil {
        return err
    }

    fileHandle,err := file.Open()   //打开上传文件
    if err != nil {
        return err
    }
    defer fileHandle.Close()
    fileByte,err :=  ioutil.ReadAll(fileHandle)  //获取上传文件字节流
    if err != nil {
        return err
    }

    url,err := upload_service.Upload(file.Filename,fileByte)

    c.JSON(http.StatusOK,gin.H{
        "error" : "",
        "errno" : "0",
        "dataType" : "OBJECT",
        "data" : gin.H{
            "url" : url,
        },
    })
    return nil
}

func Upload(fileName string,fileByte []byte)(url string,err error)  {
    /*
        oss 的相关配置信息
     */
    bucketName := config.GConfig.GetString("oss.bucket")
    endpoint := config.GConfig.GetString("oss.Endpoint")
    accessKeyId := config.GConfig.GetString("oss.AccessKeyId")
    accessKeySecret := config.GConfig.GetString("oss.AccessKeySecret")
    domain := config.GConfig.GetString("oss.domain")

    //创建OSSClient实例
    client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
    if err != nil {
        return url,err
    }

    // 获取存储空间
    bucket, err := client.Bucket(bucketName)
    if err != nil {
        return url,err
    }

    //上传阿里云路径
    folderName := time.Now().Format("2006-01-02")
    yunFileTmpPath := filepath.Join("uploads", folderName)  + "/" + fileName  //uploads/2020-06-17/GoLang (1).docx
      
    // 上传Byte数组
    err = bucket.PutObject(yunFileTmpPath, bytes.NewReader([]byte(fileByte)))
    if err != nil {
        return url,err
    }


    return domain + "/" + yunFileTmpPath ,nil
}

注:

1、先用ioutil.ReadAll获取文件的字节数
2、上传阿里云的oss地址不能有'/'

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:你的昵称是不对的

查看原文:golang oss上传文件

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3050 次点击  
加入收藏 微博
下一篇:pprof 的使用
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传