diff --git a/README.md b/README.md index 53d7b73..6f8e0e0 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ go get github.com/cowardmrx/go_aliyun_oss ossClient := ossConfig.CreateOssConnect() - //put 方法返回完整的oss 可访问地址 - uri := ossClient.Put("logo/","./File/3HaqWaOzJWD86DDvZD9Pmn9VUEOBOBbuWackGOXb (2).jpeg") + //put 方法返回完整的oss 可访问地址 第三个参数 如果文件不是[]byte数组的可以直接传递空,如果是[]byte也可以是空,会默认给出一个png的文件类型,建议实际中给出文件类型 + uri := ossClient.Put("logo/","./File/3HaqWaOzJWD86DDvZD9Pmn9VUEOBOBbuWackGOXb (2).jpeg","") fmt.Println(uri) //HasExists 方法返回一个bool值 true-存在 false-不存在 diff --git a/file.go b/file.go index 890046f..b3eb98b 100644 --- a/file.go +++ b/file.go @@ -31,6 +31,7 @@ func (ossFile *OssFile) FileTypeTransForm() (*OssFile,error) { switch ossFile.File.(type) { case *os.File: + ossFile.FileByte,err = ioutil.ReadAll(ossFile.File.(*os.File)) if err != nil { @@ -76,10 +77,16 @@ func (ossFile *OssFile) FileTypeTransForm() (*OssFile,error) { break - // 支持[]byte数组传递 因为无法解析文件类型 默认直接给出文件类型为.jpeg + // 支持[]byte数组传递 因为无法解析文件类型 默认直接给出文件类型为.png case []byte: ossFile.FileByte = ossFile.File.([]byte) - ossFile.FileOldName = uuid.NewV4().String() + ".jpeg" + + //判断是否指定了文件的类型 如果没有指定默认为png格式 + if ossFile.FileType == "" || len(ossFile.FileType) <= 0 { + ossFile.FileOldName = uuid.NewV4().String() + ".png" + } else { + ossFile.FileOldName = uuid.NewV4().String() + ossFile.FileType + } break @@ -96,12 +103,16 @@ func (ossFile *OssFile) FileTypeTransForm() (*OssFile,error) { //split file type and generate file name //截取文件类型 func (ossFile *OssFile) GetFileType() *OssFile { - //from oldFileName split file type - fileTypeSufIndex := strings.Index(ossFile.FileOldName,".") - fileType := ossFile.FileOldName[fileTypeSufIndex:] + // 当没有传递文件类型时去文件名中截取出文件类型 + if ossFile.FileType == "" || len(ossFile.FileType) <= 0 { + //from oldFileName split file type + fileTypeSufIndex := strings.Index(ossFile.FileOldName,".") - ossFile.FileType = fileType + fileType := ossFile.FileOldName[fileTypeSufIndex:] + + ossFile.FileType = fileType + } //generate only file name ossFile.FileNewName = uuid.NewV5(uuid.NewV4(),ossFile.FileOldName).String() + ossFile.FileType diff --git a/oss_operation.go b/oss_operation.go index b55e8ec..b461d88 100644 --- a/oss_operation.go +++ b/oss_operation.go @@ -15,11 +15,12 @@ type AliOssClient struct { //params: ossDir string `oss dir [要推送到的oss目录]` example: test/20201121/ //params: file interface `upload file resource [文件资源]` //return string `oss file accessible uri [可访问地址]` -func (client *AliOssClient) Put(ossDir string, file interface{}) string { +func (client *AliOssClient) Put(ossDir string, file interface{},fileType string) string { //file to []byte //文件转字节流 uploadFile := &OssFile{ File: file, + FileType: fileType, } ossFile,err := uploadFile.FileTypeTransForm() diff --git a/oss_test.go b/oss_test.go index 12f3686..42db67a 100644 --- a/oss_test.go +++ b/oss_test.go @@ -17,7 +17,7 @@ func TestPut(t *testing.T) { client := ossConfig.CreateOssConnect() - uri := client.Put("logo/","./File/3HaqWaOzJWD86DDvZD9Pmn9VUEOBOBbuWackGOXb (2).jpeg") + uri := client.Put("logo/","./File/3HaqWaOzJWD86DDvZD9Pmn9VUEOBOBbuWackGOXb (2).jpeg",".png") fmt.Println(uri) } @@ -41,7 +41,7 @@ func TestPutBase64(t *testing.T) { bat,_ := base64.StdEncoding.DecodeString(fileStr) - uri := client.Put("logo/",bat) + uri := client.Put("logo/",bat,".png") // fmt.Println(uri) }