3

コンテナに画像をアップロードするウィジェットを開発したいと考えています。これは非常によく文書化されたタスクです。

1.-オブジェクトストレージのチュートリアル

2.- Fireware-Wiki

3.- OpenStack オブジェクト ストレージ ドキュメント (Swift)

これにより、コンテナー内のファイルの取得 (ダウンロード)、アップロード、削除を管理できます。これは比較的明らかです。

一方で、コンテナに格納された画像を表示する別のウィジェットを開発したいと考えています。私はそれらを示すためにこのようなものだと思います:

<img src="public_object_url"/>

しかし、私はそれを行う方法がわかりません。この公開 URL はどこで入手できますか? 公開 URL はありますか? アップロードプロセス中に何らかのステップが発生していますか?

私はそれを行う方法を少し失っています。どんな助けでも大歓迎です。

前もって感謝します。

編集1

画像がダウンロードされると、画像の表示がブロックされます。

ここに画像の説明を入力

「img」タグの中を見ると、次のようになります。

ここに画像の説明を入力

URL.createObjectURL() によって返される文字列は何ですか。このリンクの中を見ると、ブラウザに次のように表示されます。

ここに画像の説明を入力

プロパティ「値」に含まれる文字列をデコードすると、画像が表示されます。

オブジェクト ストレージ サーバーから画像を取得するために、オペレータ Álvaro で使用されているものと非常によく似たコードを使用しました。

objectstorage.getFile(  containerName,
                            reports[i].urlImagen,{
                            token: token,
                            onSuccess: onGetFileSuccess.bind(null, i),
                            onFailure: onGetFileFailure
                          });




function onGetFileSuccess(index, picture){
    downloadedPicsCont--;
    reports[index].urlImagen = URL.createObjectURL(picture);
    if(!(downloadedPicsCont > 0)){
        MashupPlatform.wiring.pushEvent('reports_output', JSON.stringify(reports));
}

}

ピクチャ変数は次のような構造になっていますが、これも問題ないようです。

ここに画像の説明を入力

何が起こっているのですか?

編集2

最後に、その理由を見つけました。objectStorageAPI ではなく、クラウドから直接作成されたイメージをダウンロードしていました。クラウドから画像をアップロードすると、画像をダウンロードすると cdmi オブジェクト内に画像が取得されるため、URL.createObjectURL が期待どおりに機能しません。一方、objectStorageAPI を使用してアップロードすると、ダウンロード時に raw 形式で提供されるため、メソッドは正しく機能します。

4

1 に答える 1

1

私の知る限り、FIWARE Object Storage は認証が必要なので、そのような公開 URL はありません。しかし...資格情報を使用して画像をダウンロードし、URL.createObjectURLメソッドを使用して、要素のsrc属性で使用できる URL を取得できます。img

少し古いですが、この演算子を参考にしてください。

于 2015-08-27T11:15:20.790 に答える