Estoy tratando de obtener una URL solicitada para acceder a una imagen en mi cubo privado, utilizando el método GETPRESIGNEDURLREQUEST.

Mi código es el siguiente:

public string GetPresignedImageURL(string keyString)
{
    string urlString = "";
    try
    {
        GetPreSignedUrlRequest request = new GetPreSignedUrlRequest
        {
            BucketName = bucket,
            Key = keyString,
            Expires = DateTime.Now.AddMinutes(5)
        };
        urlString = _client.GetPreSignedURL(request);
     }
     catch (AmazonS3Exception e)
     {
         Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
     }
     catch (Exception e)
     {
         Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
     }
     return urlString;
}

Pasé en la llave del objeto que estoy recibiendo, por ejemplo. 0BE1137F0F3E4703A0F0689346B49871_0.jpg.

Sin embargo, esta es la URL de respuesta que recibo. No agregó la clave del objeto de la respuesta, solo los encabezados de la firma.

https://<bucket>.ap-southeast-1.amazonaws.com/?X-Amz-Expires=300&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<credential>/20190701/ap-southeast-1/s3/aws4_request&X-Amz-Date=20190701T065534Z&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>

Si pego este enlace al navegador, muestra que es una solicitud LIGBUCKETRESULT.

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Name>bucket</Name>
    <Prefix/>
    <Marker/>
    <MaxKeys>1000</MaxKeys>
    <IsTruncated>false</IsTruncated>
<Contents>
    <Key>0BE1137F0F3E4703A0F0689346B49871_0.jpg</Key>
    <LastModified>2019-07-01T06:52:17.000Z</LastModified>
    <ETag>"89db9b468ba0eb45600ed9603fe9f41d"</ETag>
    <Size>1621409</Size>
    <Owner>...</Owner>
    <StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
    <Key>18F6F2B700A747F983DB26EBC8F3E92F_0.jpg</Key>
    <LastModified>2019-06-28T08:44:40.000Z</LastModified>
    <ETag>"61aa2a6270ec840b185331646ee884a2"</ETag>
    <Size>88703</Size>
    <Owner>...</Owner>
    <StorageClass>STANDARD</StorageClass>
    </Contents>
</ListBucketResult>

No estoy seguro de si este es un error, o si me falta algo aquí. Me gustaría saber cómo puedo obtener la URL preinserada de la imagen que se muestra en el navegador o como un enlace de descarga directa (usando la disposición de contenido, que tampoco funcionó) en lugar de la lista de llaves del cubo. ¡Gracias!

1
yoon_ie 1 jul. 2019 a las 10:23

1 respuesta

La mejor respuesta

Revise su variable StrongString . Imprímalo antes de enviar la solicitud para que esté seguro de que no es nulo. La única diferencia entre la URL de obtención previa para el objeto único VS Obtener URL solicitada para listar Todos los objetos es la tecla que envía como parámetro.

Ver más aquí: https://docs.aws.amazon. com / sdkfornet1 / Últimas / apidocs / html / t_amazon_s3_model_getpresignedurlrequest.htm

1
Ninad Gaikwad 1 jul. 2019 a las 08:58