oss_test.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package test
  2. import (
  3. "cicv-data-closedloop/common/util"
  4. "cicv-data-closedloop/tools/plugin-compile/package/config"
  5. "fmt"
  6. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  7. "log"
  8. "testing"
  9. )
  10. func TestCompareSize(t *testing.T) {
  11. config.InitOss(true)
  12. // 1 下载oss文件到本地
  13. err := config.OssBucket.GetObjectToFile("1709907833304/demo.py", "D:\\demo.py")
  14. if err != nil {
  15. panic(err)
  16. }
  17. // 2 获取oss的Content-Type文件大小
  18. size, _ := util.GetOSSFileSize(config.OssBucket, "1709907833304/demo.py")
  19. fmt.Println("云上文件大小为", size)
  20. // 3 获取本地文件大小
  21. fileSize, err := util.GetFileSize("D:\\demo.py")
  22. fmt.Println("本地文件大小为", fileSize)
  23. // 4 比较大小
  24. }
  25. func TestDeleteDir(t *testing.T) {
  26. // 配置阿里云 Access Key ID、Access Key Secret 和 Endpoint
  27. accessKeyID := "yourAccessKeyID"
  28. accessKeySecret := "yourAccessKeySecret"
  29. endpoint := "http://oss-cn-hangzhou.aliyuncs.com" // 根据你的 region 修改
  30. bucketName := "yourBucketName"
  31. prefix := "yourPrefix/"
  32. // 创建客户端
  33. client, err := oss.New(endpoint, accessKeyID, accessKeySecret)
  34. if err != nil {
  35. log.Fatalf("Error creating OSS client: %v", err)
  36. }
  37. // 获取 bucket
  38. bucket, err := client.Bucket(bucketName)
  39. if err != nil {
  40. log.Fatalf("Error getting bucket: %v", err)
  41. }
  42. // 列出符合前缀的对象
  43. opts := oss.ListObjectsOptions{
  44. Prefix: prefix,
  45. Delimiter: "",
  46. MaxKeys: 1000, // 设置每次返回的最大对象数,可以根据需要调整
  47. }
  48. for {
  49. lor, err := bucket.ListObjects(opts)
  50. if err != nil {
  51. log.Fatalf("Error listing objects: %v", err)
  52. }
  53. // 遍历并删除对象
  54. for _, obj := range lor.Objects {
  55. err = bucket.DeleteObject(obj.Key)
  56. if err != nil {
  57. log.Printf("Error deleting object %s: %v", obj.Key, err)
  58. // 你可以选择如何处理删除失败的情况,例如记录日志或重新尝试
  59. } else {
  60. fmt.Printf("Deleted object: %s\n", obj.Key)
  61. }
  62. }
  63. // 如果没有更多对象,退出循环
  64. if !lor.IsTruncated {
  65. break
  66. }
  67. // 更新 ListObjectsOptions 以获取下一页对象
  68. opts.Marker = lor.NextMarker
  69. }
  70. fmt.Println("All objects with the specified prefix have been deleted.")
  71. }