Amazon S3ストレージに画像をアップロードしました。しかし、どのようにURLでこの画像にアクセスできますか?フォルダーとファイルを公開しましたが、URLでアクセスしようとするとAccessDeniedエラーが発生します https://s3.amazonaws.com/bucket/path/image.png
これは古い質問ですが、この質問に出くわした人にとっては、ファイルを公開すると、私のイメージに https://mybucket.s3.amazonaws.com/myfolder/afile.jpgとしてアクセスできました
以下を使用して画像にアクセスできます。
https://s3.amazonaws.com/bucketname/foldername/imagename.jpg
または、フォルダーがない場合は、次を実行できます。
https://s3.amazonaws.com/bucketname/imagename.jpg
賛成であれば賛成します。 2017年5月30日付の現在のAWSに準拠しています。
バケット内の任意のフォルダを右クリックし、「パブリックにする」を選択してそのフォルダ内のすべてをパブリックにできるようになりました。バケットレベル自体では機能しない場合があります。
s3にアップロードおよび保存されたのと同じケースを使用して画像にアクセスしてください。たとえば、image_name .[〜#〜] jpg [〜#〜]をアップロードした場合、image_nameではなく同じ名前を使用する必要があります。jpg
画像にアクセスできないという同様の問題の解決策を探しているときに、私はこの質問に出会いました。
ファイル名に%
が含まれる画像には、アクセス時に%
シンボルURLが%25
にエンコードされている必要があります。
つまり、photo%20of%20a%20banana%20-%2019%20june%202016.jpg
はphoto%2520of%2520a%2520banana%2520-%252019%2520june%25202016.jpg
経由でアクセスする必要があります。
ただし、スラッシュなどがエンコードされ、パスが機能しないため、フルパスをエンコードするURLは機能しませんでした。特定のケースでは、すべてのアクセスパスで%
を%25
に置き換えるだけで違いが生じました。
私は同じ問題を抱えていました。画像のURLの間隔に問題があります。私はそれを機能させるためにこれをしました:
String imgUrl=prizes.get(position).getImagePreview().replaceAll("\\s","%20");
このURLをpicassoに渡します:
Picasso.with(mContext)
.load(imgUrl)
.into(mImageView);
コンソールで、アクセスする画像を右クリックし、[公開]をクリックします。それが終わったら、画像をもう一度右クリックし、「プロパティ」をクリックして、拡張ビューからリンクをコピーします。
最も簡単な方法の1つは、バケットポリシーを作成することです。
{「バージョン」:「2012-10-17」、「ステートメント」:[{「Sid」:「MakeItPublic」、「Effect」:「Allow」、「Principal」:「」、「Action」: 「s3:GetObject」、「Resource」:「arn:aws:s3 ::: yourbucketname.com/ "}]}
URL経由でプライベート画像にアクセスするには、クエリ文字列認証を提供する必要があります。クエリ文字列認証バージョン4には、X-Amz-Algorithm、X-Amz-Credential、X-Amz-Signature、X-Amz-Date、X-Amz-SignedHeaders、およびX-Amz-Expiresパラメーターが必要です。