2016-12-30 19 views
0

私のimagem base64をMSSQLデータベースに保存するには問題があります。フィールドFotoEquipamento varbinary(max)を持つテーブルTBEquipamentoを作成しました。

[HttpPost] 
[Route("api/insertequipamento")] 
[ResponseType(typeof(TBEquipamento))] 
public async Task<IHttpActionResult> insertequipamento([FromBody] TBEquipamento addequipamento){ 

       objapi.TBEquipamento.Add(addequipamento); 
       await objapi.SaveChangesAsync(); 

       return Ok("confirmationSuccess"); 
} 

私は私のウェブサービスでチェック私のテーブルのフィールドFotoEquipamentoがあまりにもvarbinary型(最大)である:

は、私は、Web API 2を使用してWebサービスを作成しました。ここまでは大丈夫です。今

I私Angularjs、私はこの例のようにBASE64で絵を持っている:私はnullにフィールドの$ scope.FotoEquipamentoを設定した場合

$scope.FotoEquipamento: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RDoRXhpZgAATU0AKgAAAAgABAE7AAIAAAAKAAAISodpAAQAAAABAAAIVJydAAEAAAAUAAAQzOocAAcAAAgMAAAAPgAAAAA [...] 

のような:$ scope.FotoEquipamento = NULL;とAngularjsからWebServiceにすべてを渡すと、完全に機能します。しかし、$ scope.FotoEquipamentoにbase64データを渡すとエラーになります。

誰でも助けてくれますか?

+2

「これはエラーです。」 ***何のエラー?*** – Claies

+0

私は私のwebserviceの懇願の赤い点を置く、その可能性を参照してください 私はそれをbase64を送信したとき、オブジェクトはnullですが、私はnullに画像を送信したとき、すべては正しい。私は問題は、私は私のwebserviceでvarbinary(max)をファイルして、angeljsからbase64を渡していると思いますが、Angularjsで変換する方法はわかりません。すべてのイデア@ Claies? – kfm

+0

これ以上の情報がなければ、クライアント側またはサーバー側に問題があるとは言い難いです。 1)適切な角度コードを表示する2)ブラウザのネットワークタブでネットワークトラフィックをトレースする3)サーバルーチンにブレークポイントを設定する – Karl

答えて

0

私はangularjs、webapi環境およびSQLサーバで似ていました。あなたの実装との違いは、先ほどのmimetypeを使わずに純粋なbase64でエンコードされた画像を渡すだけで、情報 "data:image/jpeg; base64"をコーディングすることです。 スニペットには、webapi呼び出しで保存する前にバイナリデータ(画像、...)を準備するための関連コードが表示されます。

$scope.saveAttachment = function (content, filename) { 
     // get empty default model record from database 
     var newrecord; 
     ... 
     content = content.substr(content.indexOf("base64,") + "base64,".length); 
     dataService.saveRecord(content_table, newrecord, 'id') 
      .then(function (inserted) { 
      newrecord["id"] = inserted["id"]; // get identity value from database insert ; 
     }); 
    }); 
       } 
+0

私はそれを試みましたが動作しませんでした: 私はvar base64imgを作成しました(私の画像base64は$ scope.FotoEquipamentoにあります) 'var base64img = $ scope.FotoEquipamento.replace( "data:image/jpeg; base64、" 、 ""); base64img = base64img.substr(base64img.indexOf( "base64、")+ "base64、"。length); $ scope.FotoEquipamento = base64img; ' それは私に与えました: console.log($ scope.FotoEquipamento)= AQSkZJRgABAQEAYABgAAD/4RDoRXhpZgAATU0AKgAAAAgABAE7 [..]と私のWebサービスがエラーを返しています。私のMS SQLデータベースでは、すべての画像が00xxFFD8FFのように始まった[...] – kfm

+0

カール、それは可能な場合、[この新しい質問]で私に詳細を与えることはできませんでした(http://stackoverflow.com/questions/41400016/ image-base64-in-angularjs-to-c-sharp-varbinarymax)である。 – kfm

関連する問題