【问题标题】:how to get the file link after successfully uploading in miniominio上传成功后如何获取文件链接
【发布时间】:2021-02-14 02:56:04
【问题描述】:

我正在使用 minio 来管理文件

const getMinioClient = () => {
  const minioClient = new Minio.Client({
    endPoint: '127.0.0.1',
    port: 9000,
    useSSL: false,
    accessKey: 'minioadmin',
    secretKey: 'minioadmin'

  });
  return minioClient;
};

  uploadFile(bucketName, newFileName, localFileLocation,metadata={}) {
    return new Promise((resolve, reject) => {
      const minioClient = getMinioClient();
      //'application/octet-stream'
      minioClient.fPutObject(bucketName, newFileName, localFileLocation, metadata , (err, etag) => {
        if (err) return reject(err);

        return resolve(etag);
      });
    });
  }

用下面的代码我可以上传文件,上传成功后只返回etag,但我想获取下载链接,如何不重新搜索文件名直接获取。

【问题讨论】:

  • 您找到解决方案了吗?如果你这样做了,请分享。

标签: minio


【解决方案1】:

首先,你需要先安装minio/stable/mc 适用于 Linux/Mac

brew install minio/stable/mc

比创建别名:

mc alias set <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> --api <API-SIGNATURE> --path <BUCKET-LOOKUP-TYPE>

例如:

mc alias set minio http://192.168.1.51 BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12

对于 Amazon S3 云存储:

mc alias set s3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12

对于谷歌云存储

mc alias set gcs  https://storage.googleapis.com BKIKJAA5BMMU2RHO6IBB V8f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12

例如(在我的本地系统中):

mc alias set minio http://localhost:9000 admin password

接下来,
使用别名,此处存储桶名称为 photos,图片名称为 p.png

mc share download --recursive minio/photos/p.png

你会得到这样的输出:

URL: http://localhost:9000/photos/p.png
Expire: 7 days 0 hours 0 minutes 0 seconds
Share: http://localhost:9000/photos/p.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20220314%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220314T113907Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=34cef307940b43debf85c2d66berb4576132bf2c2a8b19c8ab5b368ef73ff517

或者如果您想从程序中生成链接
Golang 代码:

package main
import (
    "context"
    "fmt"
    "github.com/minio/minio-go/v7"
    "github.com/minio/minio-go/v7/pkg/credentials"
    "log"
    "net/url"
    "time"
)
func main() {
    endpoint := "127.0.0.1:9000"
    accessKeyID := "admin"
    secretAccessKey := "password"

    useSSL := false

    minioClient, err := minio.New(endpoint, &minio.Options{
        Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
        Secure: useSSL,
    })
    if err != nil {
        log.Fatalln(err)
    }
    fmt.Println(minioClient)

    // Set request parameters for content-disposition.
    reqParams := make(url.Values)
    reqParams.Set("response-content-disposition", "attachment; filename=\"p.png\"")

    // Generates a presigned url which expires in a day.
    presignedURL, err := minioClient.PresignedGetObject(context.Background(), "photos", "p.png", time.Second*24*60*60, reqParams)
    if err != nil {
        log.Println(err)
        return
    }
    fmt.Println("Successfully generated presigned URL", presignedURL)
}

更多信息:

https://docs.min.io/minio/baremetal/reference/minio-mc/mc-share-download.html

https://docs.min.io/docs/minio-client-quickstart-guide.html

https://docs.min.io/docs/golang-client-api-reference.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多