コンテナに画像をアップロードするウィジェットを開発したいと考えています。これは非常によく文書化されたタスクです。
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 形式で提供されるため、メソッドは正しく機能します。