2017-12-01 25 views
0

私はエキスポをネイティブと反応させて使用していますが、私は実際にこれに取り組んでいます...エキスポは、私の画像をアップロードする年月を重ねて使用しているfirebaseクラウドストレージをサポートしていません。だから私はAWS S3と一緒に働いたことがない。私はすでにgithubでこの例を見つけました:https://github.com/expo/image-upload-example/ しかし、私はバックエンドの部分について何を使用するのか把握できませんでした。使用しているapiURlは何ですか...私はコードの試行はしていませんが、 AWSの膨大な量のbla bla documentationを実際に見ることはできません。expo画像ピッカーを使用して携帯端末からAWS S3に簡単な画像をアップロードするにはどうすればよいですか?

AWS S3コンソールで作成したので、作成したバケットに一般公開されています。私はそれには問題ありません。私はユーザーにイメージをアップロードするための権限を与える必要はありませんし、単純なアップロードを達成するために必要なその他の制限があります。

だから誰でも私にこのコードを手伝うことができれば。前もって感謝します。

答えて

0

私はExpoを特に使用しませんでしたが、s3にアップロードできるようにRNプロジェクトをセットアップしました。投稿した例を考えると、私がやったことにかなり似ています。

明らかに、最初に行う必要があるのは、AWS S3のバケット設定です。 AWSコンソール内から、特定のアクセスキーとアクセス秘密を見つけることができるはずです。両方ともバケット名とともに必要になります。

あなたが掲示した例の背後にある考え方は、アクセスキーと秘密情報を安全に使用して画像をアップロードするために使用できる一意の「署名済み」URLを作成できる管理されたサーバーを持つことですあなたのバケツに直接。あなたはあなたのクライアントでこれをしたくないです。あなたのクライアント上に秘密を持っているだけで、ハッキングすることを求めています。クライアント上で何も完全に安全ではないと仮定します。

私はすでにアプリケーションのバックエンドとしてノードサーバーを構築していましたので、この部分を既に稼働させていました。バックエンドサーバーを初めて作成する場合は、Expressサーバーのセットアップ方法を調べることをお勧めしますhere。あなたはherokuのようなサービスで無料で(制限付きで)アプリをホストすることができます。もう少し詳細にこのプロセス全体を網羅した素晴らしい記事もありますhere。基本的には、あなたのクライアントアプリケーションでヒットすることができる別のGETルートを持つアプリを作成します。そのルートは、アップロードされるファイルのファイル名でクエリパラメータを受け入れます。アクセスキー、シークレット、バケット名、およびファイル名を取得するofficial aws sdkを使用して、クライアントアプリケーションに送り返す一意のURLを生成する必要があります。

クライアントアプリケーションが行うことは、アップロードが必要なファイルを準備することです。ファイルのファイル名を準備してから、Expressアプリケーションで設定したURLルートにGETリクエストを送信してください。サーバーから応答が返ってくると、その一意のURLが含まれているはずです。私はreact native fetch blobライブラリを使って、今受信したその一意のURLにPUTリクエストを実行しました。すべてがうまくいけば、ファイルをそのバケットに直接安全にアップロードする必要があります。アップロードするファイルの種類にヘッダーのContent-Typeを設定してください。

これはアップロードを行う一連のコードではありませんが、必要なことを理解し、正しい方向に向かうのに役立ちます。

+0

ありがとうございます。あなたは本当にこのすべての仕組みを理解するのを助けました...そして、私が今述べたリンクの例を提供した紳士が何をしているのかを明確に理解していると思います...この入力: –

+0

うれしそうに助かりました! –

+0

こんにちは、あなたが曇っているのを気にしない場合は、アップロードする方法を示し、次にfirebaseに保存するURLをアップロードします https://medium.com/@ifeoluwaking24/how-to-upload-an-image-in -expo-react-native-to-firebase-using-cloudbase-24aac981c87 また、軽食を試すこともできますが、cloud_nameとupload_presetを追加してください。 https://snack.expo.io/@ifeking/upload-to -cloudinary –

関連する問題