私はいくつかのイメージをmysqlデータベースにBLOBとして保存しています。私はhtmlでそれを表示したい。私はこのようなサーバーからの応答を得ます:anglejsでhtmlのblobイメージを表示
{"data":[{"ClassImage":{"type":"Buffer","data":[91,111,98,106,101,99,116,32,70,105,108,101,93]}}],"status":200,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":"http://192.168.1.19:80/getImage","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":"OK"}
私は何をしているのか分かりません。私は、BLOBレスポンスをbase64に変換してからイメージの一時URLを作成し、イメージ用にsrc
を設定する必要があることを発見しました。
応答タイプをblob
に設定すると、応答のデータ部分が空になります({}
)。応答タイプを設定しないと、[91,111,98,106,101,99,116,32,70,105,108,101,93]
となります。
これはコードです:
$scope.getImage = function(){
$http({
method:'GET',
url: $scope.ipForHttp+"getImage"
// responseType:'arrayBuffer'
})
.then(function(response){
var u8 = new Uint8Array(response.data[0].ClassImage.data);
var b64encoded = btoa(String.fromCharCode.apply(null, u8));
var file = new Blob(u8, {type: 'image/png'});
$scope.fileURL = URL.createObjectURL(file);
$scope.content = $sce.trustAsResourceUrl($scope.fileURL);
console.log($scope.fileURL);
console.log(JSON.stringify(response));
})
}
HTML:私はこれを行うと
<div>
Image:
<!-- <img ng-src="{{content}}"> -->
<!-- <img data-ng-src="data:image/png;base64,{{b64encoded}}"> -->
<img ng-src="{{fileURL}}">
<p>{{fileURL}}</p>
</div>
私はcreateObjectURL
後に取得fileURL
は、私は、画像を得ることはありませんblob:http://192.168.1.19/6d5ab92f-7e86-4537-893c-f22826ed1b5a
です。私がURLに行くと、そのページは空白になります。私は間違って何をしていますか?
、データベース内のBLOBとして画像を保存するには、悪い考えです。画像をbase64でエンコードされたデータとして保存するのは恐ろしいものです。http://stackoverflow.com/a/38829952/267540 – e4c5
@ e4c5。ええ。これはユーザーデータです。私の上司はそれをデータベースのBLOBとして望みます。それを表示するのを助けてもらえますか? – Abhi
申し訳ありません、私は悪い習慣に貢献することを拒否します。 – e4c5